자바 파일다운로드이다.
일반적으로 application/octet-stream만 선언해도 다운로드가 되지만
ms office같은 경우 파일오류가 발생한다.
하지만 아래와 같이 MimeType를 지정해 줌으로써 오류를 방지할 수 있다.
서칭을 하다 정석 파일 다운로드 소스가 있어서 공유한다.
원본 : http://www.codejava.net/frameworks/spring/spring-mvc-sample-application-for-downloading-files
@RequestMapping(method = RequestMethod.GET) public void doDownload(HttpServletRequest request, HttpServletResponse response) throws IOException { // get absolute path of the application ServletContext context = request.getServletContext(); String appPath = context.getRealPath(""); System.out.println("appPath = " + appPath); // construct the complete absolute path of the file String fullPath = appPath + filePath; File downloadFile = new File(fullPath); FileInputStream inputStream = new FileInputStream(downloadFile); // get MIME type of the file String mimeType = context.getMimeType(fullPath); if (mimeType == null) { // set to binary type if MIME mapping not found mimeType = "application/octet-stream"; } System.out.println("MIME type: " + mimeType); // set content attributes for the response response.setContentType(mimeType); response.setContentLength((int) downloadFile.length()); // set headers for the response String headerKey = "Content-Disposition"; String headerValue = String.format("attachment; filename=\"%s\"", downloadFile.getName()); response.setHeader(headerKey, headerValue); // get output stream of the response OutputStream outStream = response.getOutputStream(); byte[] buffer = new byte[BUFFER_SIZE]; int bytesRead = -1; // write bytes read from the input stream into the output stream while ((bytesRead = inputStream.read(buffer)) != -1) { outStream.write(buffer, 0, bytesRead); } inputStream.close(); outStream.close(); }
'Programming > 과거포스팅' 카테고리의 다른 글
FACADE패턴 (0) | 2015.08.04 |
---|---|
MVC패턴 (0) | 2015.08.04 |
JSP Client OS, Browser Check(JSP 클라이언트 OS, Browser Check) (0) | 2015.01.19 |
JSP POI MS Word CREATE( POI MS WORD 다운로드) (0) | 2014.12.26 |
자바 날짜 포멧 변환 (java String date format change) (0) | 2014.12.23 |