【问题标题】:Save zip file represented as a string保存表示为字符串的 zip 文件
【发布时间】:2014-03-11 00:06:11
【问题描述】:

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

fs.writeFile、fs.write、fs.createWriteStream我基本都用过,但是好像没弄对。

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

顺便说一句:由于 node.js 中的错误,我无法使用 http 模块从 Internet 接收文件,因此我使用 xhr 请求。

【问题讨论】:

  • 你能解码你收到的缓冲区吗?
  • @Zlatko 我该怎么做?
  • 也许在某处看看这里? nodejs.org/api/buffer.html我不确定,这只是一个建议。如果我知道答案,我会回答的:)

标签: node.js zip buffer adm-zip


【解决方案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);

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 2021-09-22
    • 2014-03-27
    • 1970-01-01
    • 2013-06-04
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多