2013-07-09 54 views
0

我正在重寫一些用於使用GET的代碼並將其替換爲POST。使用JQuery POST發送文件下載請求

曾經是一個GET請求的URL下載到

https://myurl/getfile?fileid=1234&filetype=pdf 

現在,我改變了對

https://myurl/getfile 

,並把fileid=1234&filetype=pdf在POST體。

function postCall(url, param) { 
    $.post(url, param); 
} 

服務器端是用Java編寫的,我試圖重新使用GET舊代碼,寫文件的二進制成servlet的流:

因爲我這樣做是使用jQuery的POST方法。

但是,我的瀏覽器不會提示用戶下載,用於GET。

以前的帖子在stackoverflow確實表明AJAX不應該用於文件下載。但是我有什麼替代方法?該請求不是由表單生成的。

非常感謝。

+0

我不知道java,但基本上你必須把文件字節放在響應中,然後將content-type設置爲相應的文件結尾。希望這有幫助 –

+0

你能否顯示服務器端代碼中的相關部分? – mthmulders

回答

0

我會建議在頁面上創建一個表單(或者使用jQuery動態創建一個表單),然後讓表單做表單提交(在表單中使用jQuery的「submit」函數或「trigger('submit')」) )。這樣請求將不會在後臺異步完成。如果「getfile」腳本使用Content-disposition:attachment附件進行響應,則應該下載。這就是說,我不確定瀏覽器會在這種情況下「提示」用戶 - 這取決於瀏覽器(無論是否出現對話框來保存下載,或者它是否自動下載文件沒有提示)。

+0

謝謝安迪。聽起來像一個解決方案。我會試試這個。 – Kevin