2013-04-02 41 views
1

我有要求在瀏覽器上顯示PDF文件的要求。我正在使用Spring MVC。有沒有wau我可以做到這一點,而不使用AbstractPdfView?我不想在運行時渲染PDF。所有的PDF文件將被存儲在我的網絡服務器中。使用Spring MVC顯示存儲在網絡服務器上的PDF文件瀏覽器新窗口

這是我正在使用的代碼。但是這直接下載文件,而不是在瀏覽器上顯示它。

@RequestMapping(value = "/download" , method = RequestMethod.GET) 
public void doDownload(HttpServletRequest request, 
     HttpServletResponse response) throws IOException { 

    // get absolute path of the application 
    ServletContext context = request.getSession().getServletContext(); 
    String appPath = context.getRealPath(""); 
    String filename= request.getParameter("filename"); 
    filePath = getDownloadFilePath(lessonName); 

    // 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/pdf"; 
    } 
    System.out.println("MIME type: " + mimeType); 


    String headerKey = "Content-Disposition"; 

    response.addHeader("Content-Disposition", "attachment;filename=report.pdf"); 
    response.setContentType("application/pdf"); 

    // 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(); 
} 

回答

3

刪除線

response.addHeader("Content-Disposition", "attachment;filename=report.pdf"); 

此行正是告訴瀏覽器顯示下載/保存對話框,而不是直接顯示PDF。

哦,並確保關閉輸入的sytream在finally塊中。

+0

真棒..感謝噸:)它的工作原理 – Donald

相關問題