2016-09-12 3 views
-1

csv 파일을 다운로드하려고하지만 HTML 코드 (머리글 및 바닥 글)도 파일로 전송됩니다. 나는 weblogic을 사용하고 있지만, Tomcat은 잘 동작한다. 코드는 다음과 같습니다.HttpServletResponse getOutputStream csv 파일에 html 코드 전송

public void downloadCSVReport(String csvFile, HttpServletResponse response){ 
     try { 

      response.setHeader("Content-Disposition", "attachment; filename=example.csv"); 
      response.setContentType("text/csv"); 

      ByteArrayInputStream bais = new ByteArrayInputStream(csvFile.toString().getBytes(REPORT_ENCODING)); 
      IOUtils.copy(bais, response.getOutputStream()); 

      response.flushBuffer(); 

     } catch(IOException e){ 
      LOGGER.error(e.getMessage(), e); 
     } 
    } 

고마워요! 내 봄 웹 애플리케이션에서

답변

1

이 코드는 ContentLength 근무 설정

public static void putFileInResponse(HttpServletResponse response, File file, String contentType) throws IOException { 
    // Set the headers 
    response.setContentType(contentType);// "application/octet-stream" for example 
    response.setContentLength((int) file.length()); 
    response.addHeader("Content-Disposition", new StringBuilder("attachment; filename=\"").append(file.getName()).append("\"").toString()); 
    response.addHeader("Content-Description", "File Transfer"); 
    response.addHeader("Content-Transfer-Encoding", "binary"); 
    response.addHeader("Expires", "0"); 
    response.addHeader("Cache-Control", "no-cache, must-revalidate"); 
    response.addHeader("Pragma", "public"); 
    response.addHeader("Content-Transfer-Encoding", "binary"); 

    // Write the content of the file in the response 
    try (FileInputStream fis = new FileInputStream(file); OutputStream os = response.getOutputStream()) { 
     IOUtils.copyLarge(fis, os); 
     os.flush(); 
    } 
} 
1

작동! 이제는 ContentLength 때문에 csvFile.length()가 추가 데이터가 더 이상 필요하지 않습니다. 감사!!