0

インターネットからzipファイルをダウンロードしています。XHR リクエスト (node-webkit を使用) を使用してそれを受け取ります。これは、zip のコンテンツが xhr.responseText の文字列として来ることを意味します。このファイルをディスクに保存したいのですが、破損していないzipアーカイブとして保存できないようです。

私は基本的にfs.writeFile、fs.write、fs.createWriteStreamを使用しましたが、うまくいかないようです。

私は AdmZip という名前のノード モジュールを使用しています。これは、zip アーカイブとして保存できるファイル バッファーを受け入れます。だから、これは1つの方法かもしれませんが、受信した文字列からバッファを作成するにはどうすればよいですか?

ところで:node.jsのバグにより、httpモジュールを使用してインターネットからファイルを受信できないため、xhrリクエストを使用しています。

4

1 に答える 1

2

そこで、何よりもまず を設定して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);
于 2014-03-13T01:56:20.567 に答える