2011-09-13 21 views
0

私のサーブレットからPDFファイルをダウンロードするコンテンツ処理を使用しています。私のコードはchrome、firefox、IEでうまく動作しますが、問題はオペラを使ってpdfファイルをダウンロードしようとしたときに、pdf拡張子を取り除いてhtmを追加することです。以下は、私のコードです:ダウンロードサーブレットコンテンツの処分をIE、クロム、ファイアフォックスではうまく動作しませんが、オペラにはありません。

 String filename = "abc.pdf"; 
     String filepath = "/pdf/" + filename; 
     System.out.println("filepath "+filepath); 
     resp.addHeader("content-disposition", "attachment; filename=" + filename); 

     ServletContext ctx = getServletContext(); 
     InputStream is = ctx.getResourceAsStream(filepath); 

     System.out.println(is.toString()); 
     int read = 0; 

     byte[] bytes = new byte[1024]; 

     OutputStream os = resp.getOutputStream();   
     while ((read = is.read(bytes)) != -1) { 
      os.write(bytes, 0, read); 
     } 
     System.out.println(read); 

     os.flush(); 
     os.close(); 
     }catch(Exception ex){ 
      logger.error("Exception occurred while downloading pdf -- "+ex.getMessage()); 
      System.out.println(ex.getStackTrace()); 
     } 

答えて

2

おそらく、ブラウザがダウンロードしたファイルはHTMLファイルが、PDFファイルではないことを知っているように、application/pdfへの応答のコンテンツタイプを設定する必要があります。

ServletResponse.setContentType()を参照してください。

+0

JB Nizetに感謝します。問題が解決しました! – Kumail

関連する問題