개발공부/JAVA

첨부파일 등록방법

SA-WOL 2021. 10. 5. 22:34
반응형

|| 문제사항

여러건의 첨부파일을 서버에 생성/등록하는 방법

 

|| multipart/form-data 처리

<form id="formData" method="post">
	<input type="file" name="file01"/>
	<input type="file" name="file02"/>
	...
</form>

//input에 추가한 첨부파일 값을 form태그에 담아 전송함
let form = $('#formData')[0];
let formData = new FormData(form);

$.ajax({
	type: 'POST',
	enctype: 'multipart/form-data',
	processData: false,
	contentType: false,
	dataType: 'json',
	url: '/insert.do',
	data: formData,
	success: function(data) {
		//반환받는 값이 있을경우 사용
	}
});

processData 
: ajax 통신을 통해 데이터를 전송할때, 기본적으로 key와 value값을 Query String으로 변환해서 보냄 (기본값 : true)
* 첨부파일 전송시에는 false로 설정함 

 

contentType

: 전송할 데이터 타입 (기본 값 : "application / x-www-form-urlencoded; charset = UTF-8")

* 첨부파일 전송시에는 false로 설정함  (content-type 헤더가 multipart/form-data로 전송됨)

 

 

|| JAVA 처리

jsp에서 받아온 여러 첨부파일들을 서버에 생성

//MultipartHttpServletRequest 로 form 데이터 값을 받는다

Map<String, MultipartFile> files = mf.getFileMap();
if(!files.isEmpty()){ 

	Iterator<Entry<String, MultipartFile>> itr = files.entrySet().iterator();
	while (itr.hasNext()) {
    
		Entry<String, MultipartFile> entry = itr.next();
		file = entry.getValue();
        
		//파일명
		String fileNm = file.getOriginalFilename(); 
        
		//확장자
		String ext = fileNm.substring(fileNm.lastIndexOf(".") + 1) 

		//파일사이즈
		long fileSize = file.getSize(); 
        
		//원하는 경로에 첨부파일을 등록
		File file = new File("/경로/"+fileNm);
    
	}
}

* 첨부파일을 서버에 생성할때 파일명은 주로 암호화 하여 저장한다.

 

반응형