Отправьте 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 загрузку буфера

Другие вопросы по тегам