반응형
출처사이트
시작 전 환경잡기
1.porm.xml에 dependency 추가하기
<!-- file upload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
2. servlet-context.xml에 bean 추가하기
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
3. web.xml 설정하기
- 용량은 10mb까지 가능하다.
- multipart를 처리하기 위해 꼭!! 설정해야한다. 나는 용량제한만 하는줄 알고 안했다가.. 한참고생했다..
<!-- fileupload multipart-config maxSize set -->
<multipart-config>
<max-file-size>104857600</max-file-size> <!-- 10MB limit -->
<max-request-size>104857600</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
<!-- fileupload multipart-config -->
업로드 / 다운로드 구현하기
1. 업로드 Controller 구현하기
- get방식은 파일 업로드 페이지로 들어오기 위해 만든 메소드다.
- if 문을 이용해 파일이 업로드되지 않았으면 파일이 없다고 알려준다.
- 다운로드를 위해 파일명을 같이 넘겨준다.
@Controller
public class UploadController {
private static final String FILE_PATH = "업로드될 경로 지정";
@RequestMapping(value = "upload", method = RequestMethod.GET)
public String link() {
return "board";
}
@RequestMapping(value = "upload", method = RequestMethod.POST)
public String upload(@RequestParam("uploadFile")MultipartFile file,
Model model) throws IllegalStateException, IOException {
String fileName = file.getOriginalFilename();
if(!file.getOriginalFilename().isEmpty()) {
file.transferTo(new File(FILE_PATH, fileName));
model.addAttribute("msg", "File uploaded successfully.");
model.addAttribute("fileName", fileName);
}else {
model.addAttribute("msg", "Please select a valid mediaFile..");
}
return "board";
}
}
2. 다운로드 Controller 구현하기
- http명령어로 다운로드를 구현했다.
@Controller
public class DownloadController {
private static final String FILE_PATH = "경로지정";
@RequestMapping("download")
@ResponseBody
public byte[] downlod(HttpServletResponse response,
@RequestParam String filename) throws IOException{
File file = new File(FILE_PATH, filename);
byte[] bytes = FileCopyUtils.copyToByteArray(file);
String fn = new String(file.getName().getBytes(), "utf-8");
response.setHeader("Content-Disposition", "attachment;filename=\"" + fn + "\"");
response.setContentLength(bytes.length);
return bytes;
}
}
3. jsp파일 구현하기
- form태그로 파일을 입력받는다.
- msg로 결과값을 출력해준다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>파일 다운로드</title>
</head>
<body>
<h3>파일 업로드</h3>
<form action="upload" method="post" enctype="multipart/form-data">
Select File : <input type="file" name="uploadFile" />
<button type="submit">Upload</button>
${msg }
</form>
<h3>파일 다운로드</h3>
<form action="download" method="post">
<input type="hidden" name="filename" value="${fileName}">
<input type="submit" value="다운로드">
</form>
</body>
</html>
반응형
'웹개발 > jsp' 카테고리의 다른 글
페이지 이동시키는 방법(forward, redirect 차이) (0) | 2022.02.17 |
---|---|
JSP 페이지 이동 4가지 방법 및 특성 (0) | 2022.02.17 |
jsp태그 및 <% 사용해서 개발하기 (0) | 2022.02.17 |
ajax로 form data(multipart) 전송 하기 (0) | 2022.02.17 |
ajax로 데이터 주고받기 (0) | 2022.02.17 |
댓글