2013-03-12 57 views
2

我想實驗創建一個Javascript應用程序,它從用戶輸入表單中的輸入,然後根據用戶的表單輸入生成一個文件。如何以編程方式在Javascript中創建可由用戶下載的客戶端文件?

該文件應該可以由用戶全部下載而不需要接觸服務器。

如何在客戶端使用JavaScript創建文件,並在客戶端可以存儲哪些文件,以便可以在服務器上首次創建時下載文件?

更新:爲了更加具體地說明Graham的回答,我一直在尋找創建文件的方式,而不必觸摸文件系統本身,而只是創建一個可以由用戶下載的文件對象(Blob)。謝謝格雷厄姆!

+2

是否存在您定位的特定瀏覽器和瀏覽器版本? (我問,因爲我認爲你需要爲此使用'data:'URL協議,而不是所有的瀏覽器版本都支持它。) – ruakh 2013-03-12 00:02:34

+0

什麼樣的文件? – mpm 2013-03-12 00:02:37

+0

您可以隨時嘗試噴灑堆:P – 2013-03-12 00:02:54

回答

10

不必使用文件系統就可以做到這一點的一種方法是創建blob。比方說,我們有一堆數據(就您的情況而言,來自表單),我們希望將其保存到文本「文件」中。我們實際上可以做一些事情如下:

var formBlob = new Blob([someStringVariable], { type: 'text/plain' }); 

從這裏,我們可以鏈接用戶下載這是一個實際的文件,像這樣:

someLink.href = window.URL.createObjectURL(formBlob); 

如果我們希望這個數據要堅持,我們可以將我們的blob序列化爲base64字符串並將其保存到localStorage或任何其他持久性存儲類型。將blob轉換爲base64稍微超出了本答案的範圍,但您可以在此找到一個很好的參考/庫:http://blog.danguer.com/2011/10/24/base64-binary-decoding-in-javascript/

相關問題