2010-04-12 62 views
3

我想讓用戶將textarea的當前內容下載到他們計算機上的文本文件中。在過去,我會創建一個iframe指向一個包含數據的URL,這會觸發一個文件下載對話框。但是這次數據是客戶端。如何下載客戶端內容

那麼,有沒有可能讓用戶下載數據而不發送它的服務器端?

回答

5

是否可以讓用戶下載數據而不發送給服務器端?

在一般情況下沒有。

如janmoesen的回答(儘管您應該對URL中包含的值進行URL編碼,或者在%nn序列出現在數據中時可能會面臨破壞),可以使用data: URL。

但是,對於很長的數據來說這是不切實際的,而且在舊的瀏覽器或IE中不可用。 (IE8允許將短數據URL用於圖像,但不能直接導航)。因此,儘管可以在支持瀏覽器的數據URL方法中加入數據URL方法,但您仍然需要一種後備解決方案來發送一整套將數據發送到服務器端並讓它迴應一個文件作爲迴應。

(出於安全原因,本應只在一個POST請求允許,服務器應包括Content-Disposition: attachment的響應。A的含量回聲腳本可以給你跨站點腳本問題除外。)

6

如果它不需要在像IE這樣的「舊瀏覽器」中工作,則可以打開一個新窗口,其地址爲'data:text/plain,' + yourTextarea.value。用戶然後可以使用文件/頁面菜單或保存該文件。Ctrl + S