Сохранить 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);