반응형

pom.xml

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>

 

servlet-context.xml

<beans:bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <beans:property name="maxUploadSize" value="5242880000" />
    <beans:property name="maxInMemorySize"
        value="100000000" />
</beans:bean>

 

multipart.java

@RequestMapping(value = "/upload.do", method = RequestMethod.POST)
public void upload(HttpServletRequest request, HttpServletResponse response) 
        throws IllegalStateException, IOException {

    MultipartFile multipartFile = null;

    String originalFileName = null; // 원본 파일 명
    String originalFileExtension = null; // 파일 확장자
    String storedFileName = null; // 저장될 파일 명


    // 파일을 받는 페이지 필요
    MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;

    // 반복자로 파일 이름을 담는다.
    Iterator<String> iterator = multipartHttpServletRequest.getFileNames();

    String uploadPath = "D:\\"; // 예) "D:\\

    // resource/egovframework/spring/context-properties.xml 에 파일업로드 경로 설정
    File file = new File(uploadPath);

    while (iterator.hasNext()) {
        multipartFile = multipartHttpServletRequest.getFile(iterator.next());

        if (multipartFile.isEmpty() == false) {

            originalFileName = multipartFile.getOriginalFilename();
            originalFileName = new String(originalFileName.getBytes("ISO-8859-1"), "UTF-8"); // 한글 깨짐 때문에 씀
            originalFileExtension = originalFileName.substring(originalFileName.lastIndexOf(".")); // .jpg
            storedFileName = UUID.randomUUID().toString() + originalFileExtension;

            file = new File(uploadPath + storedFileName);
            multipartFile.transferTo(file);

            System.out.println("originalFileName : " + originalFileName);
            System.out.println("storedFileName : " + storedFileName);
            System.out.println("type : " + multipartFile.getName());
            System.out.println("filename : " + multipartFile.getOriginalFilename());
            System.out.println("size : " + multipartFile.getSize());

        }
    }
}

 

multipart.js

$(function() {
	$("#sending").on("click", function() {
		sendImage();
	})
});

function sendImage(){

	var fileId = document.getElementById("file_input");
	var file = fileId.files[0];
	
	var formdata = new FormData();
	
	// formdata에 보낼 이미지 정보 담기 (키:값)
	formdata.append("file", file);
	console.log(formdata);

	
	$.ajax({
		type: "POST",
		url: "upload.do",
		data: formdata,
		processData: false, // 데이터를 컨텐트 타입에 맞게 변환 여부 (false 필수)
		contentType: false, // 요청 컨텐트 타입 (false 필수)
		success: function(data) {
			alert("파일이 전송 되었습니다.");
		},
		error: function(data) {
			alert("파일 전송에 실패했습니다.");
		}
	});
	
}

 

multipart.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
	<title>Home</title>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<h1>
	Hello world!  
</h1>

	<input type='file' id='file_input'>
	<button id='sending'> 보내기 </button>
<P>  The time on the server is ${serverTime}. </P>
</body>
</html>

 

반응형