我需要让用户从扩展程序中包含的某些数据下载动态创建的文件,但我不想在服务器端执行此操作。
作为一个真实世界的例子:有一个包含文本“hello world”的变量。我希望用户能够下载/创建包含此类文本的.TXT
文件。
有可能吗?
- 编辑2010年10月30日 -
到目前为止的解决方案:
window.saveAs - 根本不工作
createObjectURL - 有效,但文件名和其他选项无法自定义
将数据复制到剪贴板 - 有效,但用户需要的步骤太多
创建GoogleDocs文档 - 可行,但需要搞乱API和Oauth
-edited 2011年4月15日
看起来事情正在改善:https://github.com/eligrey/FileSaver.js
但Chrome 14+在文件名方面仍然有点奇怪。
答案 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
似乎不存在。
有没有办法将filename / mime-type设置为第一个示例?
答案 1 :(得分:2)
我认为唯一的方法是通过flash调用保存对话框,请参阅Downloadify库。
答案 2 :(得分:1)
由于安全原因,我不认为这是可能的