Chrome扩展程序:下载/导出“即时”创建的内容

时间:2010-10-23 09:42:00

标签: html5 download google-chrome-extension

我需要让用户从扩展程序中包含的某些数据下载动态创建的文件,但我不想在服务器端执行此操作。

作为一个真实世界的例子:有一个包含文本“hello world”的变量。我希望用户能够下载/创建包含此类文本的.TXT文件。

有可能吗?

- 编辑2010年10月30日 -

到目前为止的解决方案:

window.saveAs - 根本不工作

createObjectURL - 有效,但文件名和其他选项无法自定义

将数据复制到剪贴板 - 有效,但用户需要的步骤太多

创建GoogleDocs文档 - 可行,但需要搞乱API和Oauth

-edited 2011年4月15日

看起来事情正在改善:https://github.com/eligrey/FileSaver.js

但Chrome 14+在文件名方面仍然有点奇怪。

3 个答案:

答案 0 :(得分:2)

在Chromium-extensions Google Group中,我找到了这个工作示例:(我已将其修改为弹出窗口)

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似乎不存在。

谷歌围绕着我发现过时的Google Gears引用,但没有别的,也许是因为我正在处理一些太新而无法获得适当文档的内容?

有没有办法将filename / mime-type设置为第一个示例?

答案 1 :(得分:2)

我认为唯一的方法是通过flash调用保存对话框,请参阅Downloadify库。

答案 2 :(得分:1)

由于安全原因,我不认为这是可能的