保存表示为字符串的zip文件

时间:2014-03-11 00:06:12

标签: node.js zip buffer adm-zip

我正在从互联网上下载一个zip文件。我使用XHR请求(使用node-webkit)接收它,这意味着zip的内容在xhr.responseText中以字符串形式出现。我现在想要将此文件保存到磁盘,但是,我似乎无法将其保存为不受损坏的zip存档。

我基本上使用了fs.writeFile,fs.write,fs.createWriteStream,但我似乎无法正确使用。

我正在使用一个名为AdmZip的节点模块,它接受一个文件缓冲区,然后可以保存为zip存档。所以,我想,这可能是一种方法,但如何在我接收的字符串中创建一个缓冲区?

btw:由于node.js中的错误,我无法使用http模块从互联网上接收文件,因此即时使用xhr请求。

1 个答案:

答案 0 :(得分:1)

所以,我找到了一个解决方案,首先设置xhr.responseType = 'arraybuffer',然后将响应转换为Uint8Array。从那里我将Uint8Array转换为nodejs缓冲区,然后我可以保存它。

var arrayBuffer = xhr.response,
    byteArray = new Uint8Array(arrayBuffer);


var buffer = new Buffer(byteArray.length);

for (var i = 0; i < byteArray.length; i++) {

    buffer.writeUInt8(byteArray[i], i);

}


fs.writeFileSync(fname, buffer);