Сохранить zip-файл в виде строки

Я загружаю почтовый файл из Интернета. Я получаю его, используя XHR-запрос (используя node-webkit), и это означает, что содержимое zip-файла приходит в виде строки в xhr.responseText. Теперь я хочу сохранить этот файл на диск, но, похоже, я не могу сохранить его как незараженный zip-архив.

Я в основном использовал fs.writeFile, fs.write, fs.createWriteStream, но я не могу понять, что это правильно.

Я использую модуль узла с именем AdmZip, который принимает файловый буфер, который затем может быть сохранен в виде zip-архива. Итак, я думаю, это может быть одним из способов, но как сделать буфер из строки, которую я получаю?

Кстати: я не могу использовать модуль http для получения файла из Интернета из-за ошибки в node.js, поэтому я использую запрос xhr.

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);
Другие вопросы по тегам