공책

자바 파일 다운로드 한글 깨짐 처리시 본문

웹 개발/Java

자바 파일 다운로드 한글 깨짐 처리시

QTHoney 2014. 3. 27. 17:43
	public void fileUpdate(HttpServletRequest request,
			HttpServletResponse response){
		//파일명
		String fileName = FileVO.Update;
		
		File file = new File(FileVO.FILE_PATH + fileName);
        FileInputStream fileInputStream=null;
        ServletOutputStream servletOutputStream=null;
        
        try {
	       	 String downName = null;
	       	 String browser = request.getHeader("User-Agent");
	       	 //파일 인코딩
	       	 if(browser.contains("MSIE") || browser.contains("Trident") || browser.contains("Chrome")){        		
        		 downName = URLEncoder.encode(fileName,"UTF-8").replaceAll("\\+", "%20");
        	 } else {        		
	       		 downName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
        	 }
           	 response.setHeader("Content-Disposition","attachment;filename=\"" + downName+"\"");	       	 
	       	 response.setContentType("application/octer-stream");
        	 response.setHeader("Content-Transfer-Encoding", "binary;");
        	 
        	 fileInputStream = new FileInputStream(file);
        	 servletOutputStream = response.getOutputStream();
        	 
        	 byte b [] = new byte[1024];
        	 int data = 0;
        	 
        	 while((data=(fileInputStream.read(b, 0, b.length))) != -1)
        	 {
        		 servletOutputStream.write(b, 0, data);
        	 }
        	 
        	 servletOutputStream.flush();
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			if(servletOutputStream!=null){
				try {
					servletOutputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (fileInputStream!=null){
				try {
					fileInputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
Comments