JavaScript:从Firefox插件中使用XMLHttpRequest()获取zip文件

3

我正在尝试构建一个Firefox插件,从网页请求一个zip文件并将其存储在本地/解压缩。当我以Blob类型请求zip时,我收到200响应代码,但由于Firefox的文件I/O文档相当混乱,我不确定如何存储它。

getFiles : function (version) {
  if(version != "?"){
    var xmlhttp=new XMLHttpRequest();
    url = "http://github.com/wet-boew/wet-boew/archive/master.zip"
    xmlhttp.open("GET", url, true);
    xmlhttp.responseType = 'blob';

    xmlhttp.onload = function(e) {
        if (this.status == 200) {
            // Note: .response instead of .responseText
            var blob = new Blob([this.response], {type: 'compress/zip'});
        }
    };
    xmlhttp.send();
 }
 return zip;
},

文件下载 API 文档

非常感谢您的帮助和建议!


1
这就是它的作用:https://addons.mozilla.org/en-US/firefox/addon/github-extension-installer/,但它不会解压缩。但你可以做到。我建议使用zip.js的异步方法:https://github.com/gildas-lormeau/zip.js/issues/102#issuecomment-94054600 如果你请求类型为arraybuffer,你可以使用os.file将zip文件写入桌面,现在让我来处理一下解压缩的问题。 - Noitidart
2
肯定要考虑使用https://developer.mozilla.org/zh-CN/docs/Mozilla/JavaScript_code_modules/OSFile.jsm,而不是你链接的文件I/O文档 - 他们在最近几年中改进了API和文档,许多旧的例子都是不必要地复杂化了。 - Luckyrat
1个回答

1

我快要完成了,只是卡在如何使用异步zip.js模块上。你可以像我的评论中链接的插件一样使用nsIZipWriter和nsIZipReader。但我认为异步更好,所以我正在研究。

https://github.com/Noitidart/AysncZip/blob/master/bootstrap.js

安装插件,点击工具栏图标,下载zip文件。点击压缩将其保存为zip文件。点击“解压缩”目前还在开发中。

使用XPCOM进行zip操作:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接