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」です。ファイルの内容は、「応答」タブの下にジャンク形式で表示されています。
コンテンツをファイルとして保存する方法を教えてください。