2013-08-20 38 views
0

我正在做一個將doc文件轉換爲另一個文件(基於用戶偏好)的小型HTML項目。該網站將讓用戶獲取文件,並在將文件發送到Java servlet之前選擇他們的文件處理方式。處理完文件後,servlet會將處理後的文件作爲可下載的文件發送,然後自動下載到用戶的瀏覽器下載文件夾中。獲取XHR作爲可下載文件發送的formdata輸出

起初,我使用了HTML的表單標籤,其上有各種輸入。提交表單後,處理後的文件會自動下載到我的瀏覽器的下載文件夾中。

但後來我改變了拾取文件的方法拖放,並使用XMLHttpRequest發送表單數據,以及刪除的文件到servlet。 formdata已成功發送到servlet,並且servlet正常處理文件。但是之後,servlet並沒有將處理後的文件作爲可下載的文件發送到我的瀏覽器。我檢查了檢查員,在網絡選項卡下的響應,它顯示了處理的文件內容,但我沒有得到像我通常使用表單標記方法得到的處理文件。

所以我想知道我在我的XHR代碼下面做錯了什麼?我只想從servlet中獲取處理後的文件作爲可下載的文件,而不是在我的頁面上顯示它。 HTML表單標記正常工作,servlet將處理後的文件作爲自動下載文件返回,但對於XHR,處理後的文件僅顯示在檢查器中網絡下的響應選項卡中,無法下載文件或任何其他文件。

function formHandler(form) { 
    var formdata = new FormData(form); 
    formdata.append("inputFile", doc); 
    var xhr = new XMLHttpRequest(); 
    xhr.open('POST', "excelServlet", true); 
    xhr.send(formdata); 
} 

回答

0

好吧,我得到的回答這個了。

AJAX無法像表單的submit()方法那樣直接從服務器下載響應。 =。='''響應將顯示在檢查員的回覆中,但用戶將無法下載。