2010-10-23 37 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

相关问题