2009-07-07 71 views
2

我是網絡開發新手,所以如果這個問題沒有問題,我很抱歉。我希望在服務器的硬盤上向用戶提供一個文件(如發送HTTP附件以觸發瀏覽器的「另存爲...」對話框)。用戶點擊頁面上的按鈕,服務器根據他/她的某些帳戶設置(和其他參數)生成定製的數據文件,然後彈出「另存爲...」對話框。我應該如何去實現這個在Javascript中?使用Javascript向用戶發送HTTP附件(打開瀏覽器的另存爲...對話框)

編輯:供大家參考,服務器Glassfish和Apache的

回答

2

簡,

另存爲對話框o很少出現在頁面加載。您需要將您的用戶直接重定向到您希望他們保存的文件,或重定向到提供文件的服務器端頁面。

一旦你知道文件的地址,這樣做

window.location = http://yourserver.com/generatedfiles/file_2342342.txt 

或者,做這樣的事情:

window.location = http://yourserver.com/getgeneratedfile.aspx?fileID=2342342 

...這將用戶重定向到該因子的頁面生成的文件。然後您需要在該頁面的標題中指定內容處置和文件名,如甘道夫的回覆中所述。

編輯:啊,你使用的是Apache。那麼可能不會有那裏的ASPX文件。

1

設置HTTP響應頭:

Content-Disposition: attachment; filename=myfile.txt 

或者像這樣

<a href="javascript:void(0);" onclick="document.execCommand('SaveAs',true,'file.html');">Save this page</a> 
1

@ aric的回答是正確的;但是,window.location將導致加載/卸載事件被觸發,這可能不適合您的應用程序。在這種情況下,您可能會將隱藏的iframe指向該url,以使保存對話框顯示而不會丟失頁面的狀態。

另外,'SaveAs'可能是document.execCommand的IE特定值,因爲它doesn't exist in Firefox