2010-10-23 61 views
7

我需要讓用戶從擴展中包含的某些數據中即時下載創建的文件,但我不想做這個服務器端。Chrome瀏覽器擴展程序:下載/導出內容「即時創建」

作爲一個現實世界的例子:有一個包含文本「hello world」的變量。我希望用戶能夠下載/創建一個包含這樣的文本的.TXT文件。

可能嗎?

-edited 10月30日,2010-

解決方案迄今:

window.saveAs - 在所有

createObjectURL不工作 - 作品,但文件名和其他選項可以't be customized yet

將數據複製到剪貼板 - 作品,但步驟太多需要用戶

創建GoogleDocs文件 - 可以工作,但需要與API和OAuth搞亂

-edited 2011年4月15日

看起來正在好轉:https://github.com/eligrey/FileSaver.js

但是Chrome 14+對於文件名仍然有點奇怪。

+0

嘿,你發現如何做到這一點? – SLearner 2014-07-15 16:04:58

+0

我認爲最簡單和最現代的方式在這裏描述:http://stackoverflow.com/a/27928869/193017 – 2015-03-24 23:29:09

回答

2

我想唯一的方法就是通過flash調用保存對話框,參見Downloadify庫。

+0

幾個小時前,我不知道如何處理這個問題,現在我已經有兩種方法,謝謝! – Omiod 2010-10-23 15:42:19

+0

我終於測試了Downloadify,並且由於Flash安全沙箱,它不起作用。從文檔: 「**重要提示!swf已被編譯爲僅供在線使用。從文件路徑(即file://)進行測試將不起作用,因爲它將違反安全沙箱。**」 I不能使用Blob選項,因爲它僅適用於最新的Chrome開發版本,因此目前我無法爲擴展用戶提供任何導出功能...... :( – Omiod 2010-10-30 11:28:20

+0

Downloadify的最後一個副本可在Web存檔:https://web.archive.org/web/20101023200441/http://downloadify.info/然後引用https://github.com/dcneiner/Downloadify – 2015-03-24 11:38:37

1

我不認爲這是可能的,因爲安全原因

+0

這是一個安全的紅色鯡魚。從遠程服務器上下載一些任意二進制文件(這是普遍允許的),沒有任何可能的方式安全。 – Cuadue 2012-06-21 18:58:36

2

在鉻的擴展谷歌集團我發現這個工作例如:(我已經修改了它,從彈出的工作)

BuiltBlob = new BlobBuilder(""); 
BuiltBlob.append("Hello, world"); 
BlobToSave = BuiltBlob.getBlob(); 
chrome.tabs.create({'url': createObjectURL(BlobToSave), 'selected': false}); 

但文件名未設置,與類似cf8a56bf-d724-4b97-b10f-e252961135bd

在W3C的文檔(http://dev.w3.org/2009/dap/file-system/file-writer.html)結束我發現這個不工作例如:

var bb = new BlobBuilder(); 
bb.append("Lorem ipsum"); 
var fileSaver = window.saveAs(bb.getBlob(), "test_file"); 
fileSaver.onwriteend = myOnWriteEnd; 

window.saveAs似乎不存在。

谷歌周圍我發現過時的谷歌齒輪引用,但沒有別的,也許是因爲我正在處理新的東西,沒有適當的文檔?

有沒有辦法將filename/mime-type設置爲第一個例子?

+0

好吧,HTML5甚至還沒有完成作爲一個規範,更不用說準備在整個網絡上全面實施。不幸的是,HTML5是「下一件大事」,只是有點過早。這並不奇怪,文件編寫器還沒有工作。你總是可以檢查HTML5test,看看你的瀏覽器到目前爲止支持什麼。 – Xorlev 2010-10-23 15:44:23

相關問題