我想生成一个CSV文件作为一些用户交互的结果,然后提示用户下载它。我怎么能这样做?
我认为直接JS不可能,但Chrome可能会给我一些提升的权限吗?
答案 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有一个很棒的教程:
答案 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"]