我是網絡開發新手,所以如果這個問題沒有問題,我很抱歉。我希望在服務器的硬盤上向用戶提供一個文件(如發送HTTP附件以觸發瀏覽器的「另存爲...」對話框)。用戶點擊頁面上的按鈕,服務器根據他/她的某些帳戶設置(和其他參數)生成定製的數據文件,然後彈出「另存爲...」對話框。我應該如何去實現這個在Javascript中?使用Javascript向用戶發送HTTP附件(打開瀏覽器的另存爲...對話框)
編輯:供大家參考,服務器Glassfish和Apache的
我是網絡開發新手,所以如果這個問題沒有問題,我很抱歉。我希望在服務器的硬盤上向用戶提供一個文件(如發送HTTP附件以觸發瀏覽器的「另存爲...」對話框)。用戶點擊頁面上的按鈕,服務器根據他/她的某些帳戶設置(和其他參數)生成定製的數據文件,然後彈出「另存爲...」對話框。我應該如何去實現這個在Javascript中?使用Javascript向用戶發送HTTP附件(打開瀏覽器的另存爲...對話框)
編輯:供大家參考,服務器Glassfish和Apache的
簡,
另存爲對話框o很少出現在頁面加載。您需要將您的用戶直接重定向到您希望他們保存的文件,或重定向到提供文件的服務器端頁面。
一旦你知道文件的地址,這樣做
window.location = http://yourserver.com/generatedfiles/file_2342342.txt
或者,做這樣的事情:
window.location = http://yourserver.com/getgeneratedfile.aspx?fileID=2342342
...這將用戶重定向到該因子的頁面生成的文件。然後您需要在該頁面的標題中指定內容處置和文件名,如甘道夫的回覆中所述。
編輯:啊,你使用的是Apache。那麼可能不會有那裏的ASPX文件。
設置HTTP響應頭:
Content-Disposition: attachment; filename=myfile.txt
或者像這樣
<a href="javascript:void(0);" onclick="document.execCommand('SaveAs',true,'file.html');">Save this page</a>
@ aric的回答是正確的;但是,window.location
將導致加載/卸載事件被觸發,這可能不適合您的應用程序。在這種情況下,您可能會將隱藏的iframe指向該url,以使保存對話框顯示而不會丟失頁面的狀態。
另外,'SaveAs'可能是document.execCommand的IE特定值,因爲它doesn't exist in Firefox。