2014-09-02 78 views
2

我想將文件存儲到本地計算機。使用JavaScript將文件存儲到本地計算機(正在下載)

對於HTML5,我們可以使用cookieslocal storage將數據存儲到本地計算機。 本地存儲使用key-value對(json)來存儲數據。 但是,我想要以不同的格式保存數據,例如以XML格式保存。

在諸如convertonlinefree.com之類的網站上,當文件被轉換時,文件將自動開始下載。

所以,我正在考慮一種方法來做到這一點: 當用戶點擊一個按鈕時,XML文件會自動下載。這可能嗎?如果是這樣,我該怎麼做?

+1

這裏已經討論過了:http://stackoverflow.com/questions/19744155/writing-file-to-desktop-using-html5-filesystem-api – 2014-09-02 20:24:16

+0

使用http://danml.com/js/download。 js,它只是下載(strXmlData,「myxmlfile1.xml」,「text/xml」);單獨使用dataURL可能不會觸發XML的下載,因爲一些瀏覽器顯示文檔... – dandavis 2014-09-02 20:31:26

+0

謝謝,我在討論中找到這個:http://stackoverflow.com/questions/19744155/writing-file-to-desktop-using- html5-filesystem-api – yongnan 2014-09-02 20:32:47

回答

0

你想要使用的是Data_URI_scheme這基本上意味着你必須base64編碼你的文件來下載它。

所以這樣的事情應該工作:

window.location = 'data:application/xml;base64,'+ btoa("<xml>data in the file</xml>") 
+0

中有一些問題,你應該讓它成爲一個奇怪的MIME類型來強制下載,否則它可能會顯示出來... – dandavis 2014-09-02 20:37:55

2

您可以創建無形的元素,如a和模擬點擊,下載文件,check my codepen的演示。

最重要的部分是這樣的:

var text = xmlContent.value; 
// Create element. 
a = document.createElement('a'); 
// Attach href attribute with value of your file. 
a.setAttribute("href", "data:application/xml;charset=utf-8," + text); 
// HTML5 property, to force browser to download it. 
a.setAttribute("download", "my.xml"); 
a.click(); 

您也可以選擇與有意不正確的MIME類型取代application/xml部分,迫使瀏覽器下載,而不是試圖以顯示它的文件。

+0

很酷,儘管我已經使用了download.js。謝謝。 – yongnan 2014-09-02 21:04:35

相關問題