0

ファイル システムにある PDF のダウンロードを許可しようとしています。基本的に次のことを行う ActionSupport を拡張するアクション クラス DownloadFileAction があります。

public String execute() {
  // lookup file
  inputStream = new FileInputStream(file);
  return SUCCESS;
}

public String getContentType() {
  return "application/pdf";
}

public String getContentDisposition() {
  return "attachment;filename=\"filename.pdf\"";
}

私のアクション マッピングは、期待どおりに定義されています。

<action name="downloadFile" class="com.foo.DownloadFileAction">
  <result name="success" type="stream">
    <param name="allowCaching">false</param>
  </result>
</action>

これは Firefox と IE9 ではうまく機能しますが、不明な理由で IE8 では機能しません。何かご意見は?


更新: ライブ HTTP ヘッダー プラグインを使用すると、Firefox でダウンロードを行うときにこれが表示されます。これはIE8でも同じだと思います:

 http://fmpdmb:7001/shopping/search/printItemDetail.action?upid=41271812&OeT2rTJY=LIJ8HDLqT7igptDozBz5ocIg

 GET /shopping/search/printItemDetail.action?upid=41271812&OeT2rTJY=LIJ8HDLqT7igptDozBz5ocIg
 HTTP/1.1 
 Host: fmpdmb:7001 
 User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1 
 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
 Accept-Language: en-us,en;q=0.5 
 Accept-Encoding: gzip, deflate
 Connection: keep-alive 
 Referer: http://fmpdmb:7001/shopping/search/searchResultItemDetail.action?upid=41271812
 Cookie: ADMINCONSOLESESSION=vQpcPk2N58P1QZtLrPVHyWjvS9pDmT2b60pdrpqHrBHQhjGBLmhV!-1356202776;
 EMALL-SESSION=r7FbPrmCQ1DVQt1Wkf214nznpT61L03JHhN1d7Z8TZzH5tzCXvdm!1350268378

 HTTP/1.1 200 OK
 Cache-Control: no-cache 
 Date: Wed, 27 Jun 2012 15:48:00 GMT 
 Pragma: nocache, no-cache 
 Transfer-Encoding: chunked
 Content-Type: application/pdf 
 Expires: 0 
 Content-Disposition: inline;filename="document.pdf" 
 X-Powered-By: Servlet/2.5 JSP/2.1

更新:もう少し情報。これは、アプリが https で実行されているという事実と関係があるのではないかと思います。それは役に立ちますか?

4

1 に答える 1

-1

アクションは次のようになります。

<action name="download" class="com.project.DownloadAction">
    <result name="success" type="stream">
      <param name="contentType">application/pdf</param>
      <param name="inputName">inputStream</param>
      <param name="contentDisposition">attachment;filename="download.pdf"</param>
      <param name="bufferSize">1024</param>
    </result>
   </action>

アップデート

この記事をチェックしてください: Internet Explorer は https://something をダウンロードできません。https を使用していてキャッシュを防止している場合、ダウンロードは失敗します。

次のようなものを定義してみてください。エラーを防ぐのに役立ちます。

 Cache-Control: private, max-age=15
于 2012-06-27T19:50:26.300 に答える