如何在Google Chrome扩展程序中生成要下载的文件?

时间:2011-01-23 01:32:40

标签: google-chrome-extension

我想生成一个CSV文件作为一些用户交互的结果,然后提示用户下载它。我怎么能这样做?

我认为直接JS不可能,但Chrome可能会给我一些提升的权限吗?

3 个答案:

答案 0 :(得分:5)

您现在可以使用HTML5 File API下载文件。它仍处于开发阶段,但您可以使用BlobBuilder并重定向您的使用以下载该文件:

var bb = new BlobBuilder();
bb.append(csvContents);
var blob = bb.getBlob(); 
location.href = window.webkitURL.createObjectURL(blob);

有关File API的更多信息,HTML5Rocks有一个很棒的教程:

http://www.html5rocks.com/tutorials/file/filesystem/

答案 1 :(得分:2)

Chrome没有提供任何帮助,但我认为您应该能够使用downloadify js库触发文件保存对话框,该库在幕后使用闪存组件。

答案 2 :(得分:1)

我最近需要做同样的事情 - 生成文件并在Chrome扩展程序中强制执行下载。在这里,您使用ES6和推荐的方法执行该操作的代码片段:

let docContent = ... /* your content */;
let doc = URL.createObjectURL( new Blob([docContent], {type: 'application/octet-binary'}) );
chrome.downloads.download({ url: doc, filename: filename, conflictAction: 'overwrite', saveAs: true });

您还必须在manifest.json

中声明适当的权限
"permissions" : ["downloads"]