Отправьте zip-файл с сервера node.js на клиент node.js
Я пытаюсь отправить zip-файл с сервера node.js клиенту node.js, но когда я сохраняю zip-файл, он поврежден и не открывается.
Я использую adm-zip, чтобы заархивировать файл и отправить клиенту
app.get('/checkForUpdate', function (req, res) {
var zip = new AdmZip();
zip.addLocalFile("./update.js");
var willSendthis = zip.toBuffer();
res.send(willSendthis);
});
вот мой код клиента
$.ajax({
type: 'GET',
contentType: 'application/json',
data: {version: version},
url: 'http://localhost:3000/checkForUpdate',
success: function (data) {
fs.writeFile("update.zip", data, function(err) {
if(err) {
console.log(err);
} else {
console.log("The file was saved!");
}
});
}
});
3 ответа
Я думаю, это должно быть установлено для типа MIME application/x-zip-compressed
,
Если вы хотите сжать текст или любые данные в виде zip-файла, вы можете использовать пакет JSZip npm.
Я дал ссылку ниже, чтобы установить его.
https://www.npmjs.com/package/jszip
Приведенный ниже код преобразует текстовый файл и отправляет его в виде буфера, который клиент может загрузить.
const zip = new JSZip()
zip.file("Hello.txt", "Hello World\n")
const buffer = await zip.generateAsync({ type: `nodebuffer` })
res.writeHead(200,{ 'Content-Type': `application/zip` })
res.end(buffer)
Я думаю, что проблема заключается в отправке буфера. Если я правильно помню, буферу нужен mime-тип octect-stream. Попробуйте использовать octect-stream в заголовке и используйте adm-zip загрузку буфера