0
我是ExtJS和Struts2的新手。我的要求是當用戶點擊一個鏈接時下載一個文件(在瀏覽器中保存文件或渲染內容)。我不知道文件類型我下載前(這可能是一個PDF格式,GIF,EXCEL,ZIP或別的東西),我已經構建以下AJAX要求使用Struts2和ExtJS下載文件
調用一個動作:
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」。文件內容以垃圾格式顯示在「響應」選項卡下。
有人可以告訴我如何將內容保存爲文件?
你想去哪裏文件類型的信息?如果你的意思是內容類型,你可以從你的動作中傳遞它們,比如' $ {content-Type}'你可以在動作類中設置內容類型 –
文件類型可以是任何東西。我可能會從同一臺服務器獲得或可能請求遠程服務器。爲了讓這個簡單,我正在從本地機器讀取一個文件(「/home/sasha/abc.pdf」)。 – Sasha
好吧,一旦你得到文件,你可以很容易地找到文件類型,並在相同的類型設置類型在你的行動類傳遞你的配置文件。 –