我是 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”。文件内容已以垃圾格式显示在“响应”选项卡下。
有人可以告诉我如何将内容保存为文件吗?