스프링 #09 파일업로드 '만' 처리

수박·2020년 6월 10일
0

Spring

목록 보기
8/18

스프링 #09 파일업로드 처리

파일 업로드하는 방법에 대해 학습해보자.

pom.xml에 commons-fileupload 라이브러리를 추가한다.

<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.3</version>
</dependency>

그리고 파일이 임시로 업로드 될 폴더를 C하위에 upload/tmp로 생성한다.

그리고 servlet-context 파일에 아래와 같은 설정을 추가한다.

	<!--  File upload configuration -->
	
	<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<beans:property name="defaultEncoding" value="utf-8"></beans:property>
		<!-- 1024 * 1024 * 10 bytes 10MB -->
		<beans:property name="maxUploadSize" value="104857560"></beans:property>
		<!--  1024 * 1024 * 2bytes  2MB -->
		<beans:property name="maxUploadSizePerFile" value ="2097152"></beans:property>
		<beans:property name="uploadTempDir" value="file:/C:/upload/tmp"></beans:property>
		<beans:property name="maxInMemorySize" value="10485756"></beans:property>
	</beans:bean>
	
  • maxUploadSize : 한 번의 Request로 전달 될 수 있는 최대 크기
  • maxUploadSizePerFile : 한 파일의 최대 크기
  • maxInMemorySize : 메모리 상에서 유지하는 최대 크기, 해당 크기 이상의 파일은 uploadTempDir에 임시 파일 형태로 보관된다.
	@GetMapping("/exUpload")
	public void exUpload() {
		log.info("/exupload..........");
	}
	// 해당 내용 작성 후 jsp파일도 작성
<form action="/sample/exUploadPost" method="post" enctype="multipart/form-data">

	<div>
		<input type='file' name='files'>
	</div>
	
	<div>
		<input type='file' name='files'>
	</div>
	
	<div>
		<input type='file' name='files'>
	</div>
	
	<div>
		<input type='file' name='files'>
	</div>
	
	<div>
		<input type='file' name='files'>
	</div>
	
	<div>
		<input type='submit' value="제출">
	</div>
</form>

form action태그를 exUploadPost로 작성했으니 post방식의 맞는 메소드를 추가한다

	@PostMapping("/exUploadPost")
	public void exUploadPost(ArrayList<MultipartFile> files) {
		files.forEach(file -> {
			log.info("--------------");
			log.info("name: " + file.getOriginalFilename());
			log.info("size: "+ file.getSize());
		});
	}

제대로 업로드되어 ArrayList의 files가 데이터를 전달받고 이를 출력해주는 화면이다.

JAVA로 설정하면

ServletConfig클래스에서,

mutipartResolver를 빈으로 등록하고 CommonsMultipartResolver 객체의 getResolver을 작성한다.

최종 업로드는 byte[]처리를 해야한다. 나중에 다뤄볼 예제.

0개의 댓글