위 링크를 통해 maven 의존성을 추가해 준다.
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
servlet-context.xml에 파일이 업로드될 경로 설정 및 파일 업로드에 사용할 설정을 해준다.
<resources mapping="/upload/**" location="/resources/upload/" />
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="maxUploadSize" value="5000000"/>
<beans:property name="defaultEncoding" value="utf-8"/>
</beans:bean>
그 후에는
<input type="file" name="upload">
이와 같은 형태로 파일을 추가할 수 있는데 이때 보낼 form태그에
enctype="multipart/form-data"
를 필수로 추가해 주어야 한다.
자바 컨트롤러 쪽에 넘어온 데이터는
@PostMapping("/upload1")
public String uploadPhoto1(
@RequestParam String title,
@RequestParam("upload") MultipartFile upload,
HttpServletRequest request,
Model model
)
{
String realFolder=request.getSession().getServletContext().getRealPath("/resources/upload");
System.out.println(realFolder);
String fileName=upload.getOriginalFilename();
fileName=UUID.randomUUID()+".jpg";
try {
upload.transferTo(new File(realFolder+"/"+fileName));
model.addAttribute("title", title);
model.addAttribute("photo", fileName);
} catch (IllegalStateException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "upload/resultphoto1";
}
이와 같이 MultipartFile 형태로 데이터를 받아주고,
fileName=UUID.randomUUID()+".jpg"; 를 통해 이미지의 중복 저장을 방지할 수 있다.
'Spring' 카테고리의 다른 글
[Spring Boot] 외장 톰캣 웹 배포하기(apache-tomcat) (0) | 2024.09.25 |
---|---|
[Spring] web.xml 한글 필터 (0) | 2024.05.20 |
[Spring] Maven Project (0) | 2024.05.20 |
[Spring] Annotation(Lombok) (0) | 2024.05.20 |
[Spring] MVC (0) | 2024.05.20 |