0

ExtJS と Struts2 は初めてです。私の要件は、ユーザーがリンクをクリックしたときにファイルをダウンロードすることです (ファイルを保存するか、新しいタブのブラウザーでコンテンツをレンダリングします)。ダウンロードする前にファイルの種類がわかりません (pdf、gif、excel、zip などの可能性があります)。

アクションを呼び出すために、以下のAJAXリクエストを作成しました。

    Ext.onReady( function() {
      Ext.Ajax.request({
        url : 'action/download.do',
        params : {
          loc : path
        },
        method : 'POST',
        success: function(response, request) {
          return;
        }
      });
    });

struts.xml構成:

    <action name="download" class="downloadAction" method="download" >
      <result name="success" type="stream">
        <param name="contentType">application/octet-stream</param>
        <param name="inputName">fileInputStream</param>
        <param name="contentDisposition">attachment;</param>
        <param name="bufferSize">1024</param>
      </result>
    </action>

アクションコード:

    public String documentDownload() {
      String filePath = "/home/sasha/abc.pdf";
      try {
        fileInputStream =  new FileInputStream(new File(filePath));
      } catch (FileNotFoundException e) {
        LOGGER.error(e.getLocalizedMessage(), e);
      }
      return SUCCESS;
    }

Firebug で応答を確認したところ、「200 OK」です。ファイルの内容は、「応答」タブの下にジャンク形式で表示されています。

コンテンツをファイルとして保存する方法を教えてください。

4

1 に答える 1

0

を呼び出してファイルのコンテンツ タイプを取得し、struts.xml でパラメータとして使用できますcontentType = ServletActionContext.getServletContext().getMimeType(file_name)contentType

ところで、ファイルの MIME タイプを取得する方法は複数あります。 http://www.rgagnon.com/javadetails/java-0487.htmlを参照してください。

于 2012-10-03T10:01:14.267 に答える