@Controller("downloadController")
public class DownloadController {
@Resource(name = "fileUploadProperties")
Properties fileUploadProperties;
@RequestMapping(value = "/download/downloadFile.do")
public void downloadFile(
@RequestParam(value = "requestedFile") String requestedFile,
HttpServletResponse response) throws Exception {
String uploadPath = fileUploadProperties
.getProperty("file.upload.path");
File uFile = new File(uploadPath, requestedFile);
int fSize = (int) uFile.length();
if (fSize > 0) {
BufferedInputStream in = new BufferedInputStream(
new FileInputStream(uFile));
// String mimetype = servletContext.getMimeType(requestedFile);
String mimetype = "text/html";
response.setBufferSize(fSize);d
response.setContentType(mimetype);
response.setHeader("Content-Disposition", "attachment; filename=\""
+ requestedFile + "\"");
response.setContentLength(fSize);
FileCopyUtils.copy(in, response.getOutputStream());
in.close();
response.getOutputStream().flush();
response.getOutputStream().close();
} else {
//setContentType을 프로젝트 환경에 맞추어 변경
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("");
printwriter.println("
Could not get file name:
"
+ requestedFile + "
");
printwriter
.println("
Back
");
printwriter.println("
© webAccess");
printwriter.println("");
printwriter.flush();
printwriter.close();
}
}
}
jsp 페이지로 간단하게 구현된 예시
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
Success
Success
All good
순번 :
uploadedFilePath :
파일명 :
파일사이즈 :
Tomcat에서는 일반적으로 웹 어플리케이션이 GET과 POST 방식으로 파라미터를 넘겨 받을 때 request.setCharacterEncoding()을 통한 문자셋 인코딩이 필요하다.
파일을 다운로드시 한글이 깨지는 문제가 발생할 경우
제우스나 WebLogic의 경우는 JSP 페이지에 아래와 같이 넣어주면 한글 깨지는 문제가 해결된다.
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
Tomcat에서는 한글이 깨지는 문제가 발생하는데 아래의 링크를 참조하기 바란다.
*[[egovframework:rte:fdl:Tomcat 한글 설정하기]]
===== 참고 자료 =====