2011-05-30 64 views
5

我想動態地在javascript中生成一個文本文件,然後提供這個下載。目前我能得到這個工作在一定程度上用下面的解決方案:我怎樣才能生成一個文件,並提供下載在純JavaScript的?

content = "abc123"; 
document.location = "data:text/octet-stream," + encodeURIComponent(content); 

OR

content = "abc123";  
var bb = new BlobBuilder(); 
bb.append(content); 
var blob = bb.getBlob(); 
blob = blob.slice(0, blob.size, 'text/octet-stream'); 
var fr = new FileReader(); 
fr.onload = function() {document.location = this.result;} 
fr.readAsDataURL(blob); 

然而,這兩種解決方案,出現的下載框時,只會提供一個默認的文件名保存爲對話框中的'下載'。

我的問題基本上是,我怎樣才能改變這種爲特定文件名如「readme.txt文件」或「scene.obj」

還要注意數據類型是以前「text/plain的」但是如果這文檔切換到新的文本文檔,而不是提供下載(如文本/八位字節流似乎這樣做)。

我不想要一個Flash解決方案,只需javascript/html5建議。

乾杯,喬希

+0

可能提供FileSaver接口重複的[有什麼辦法來指定建議的文件名時使用數據:URI?](http://stackoverflow.com/questions/283956/is-there-any-way-to-specify-a-suggested-filename- when-using-data-uri) – 2011-05-30 12:09:15

+0

這似乎是建議鏈接的副本,不確定爲什麼我在搜索時沒有找到它。希望回答這個問題的人應該關注這個鏈接。 – 2014-05-01 21:30:58

回答

4

對於這一點,你將不得不使用FileSaver從FileAPI:作家規範。 目前,這只是一個草稿,根據mailing list answer它尚未在瀏覽器中實現。

您可以觀看例如在chromium issue,以獲取有關執行進度

UPD 2013年2月8日上的最新信息:因爲我已經找到了一個project,使用巧妙的技巧

+1

IE10具有msSaveOrOpenBlob和msSaveBlob功能。在IE10中有兩種方法可以讓網站要求用戶將blob保存到他們的計算機上。更多信息,請訪問http://blogs.msdn.com/b/ie/archive/2012/01/27/creating-files-through-blobbuilder.aspx – Alexander 2012-04-24 13:36:53

0

我認爲你應該檢查:jQuery Table to CSV export

+0

這些解決方案看起來像依賴於服務器端腳本,我期待堅持客戶端。無論如何感謝您的建議。 – 2011-05-31 04:03:19

相關問題