madrogalo
@madrogalo
Кратко о себе

Как вернуть zip файл из post запроса в express.js?

Не некорректно отрабатывает post ответ в express.js.
На post /download/excel я хочу создавать excel файл, запаковать в архив и передать в архиве.
Сейчас файл создается но когда скачиваю файл, то файл не открывается

const express = require('express')
const excel = require('exceljs')
const bodyParser = require('body-parser')
const app = express()
const spawn = require('child_process').spawn

app.use(bodyParser.urlencoded({ extended: true }));

app.use(bodyParser.json());
app.use(bodyParser.raw());

const reportFields = [
  {
    title: "Время создания",
    description: "10.12.2021",
  },
  {
    title: "Title",
    description: "Description",
  },
];

app.post('/download/excel', (req, res) => {

  let workbook = new excel.Workbook();
  let worksheet = workbook.addWorksheet("Report");

  worksheet.columns = [
    { header: "Title", key: "title", width: 25 },
    { header: "Description", key: "description", width: 25 },
  ];

  worksheet.addRows(reportFields);

  res.setHeader(
    "Content-Type",
    "application/zip"
  );
  res.setHeader(
    "Content-Disposition",
    "attachment; filename=archive.zip"
  );


  workbook.xlsx.writeFile("report.xlsx").then(() => {
    console.log("xlsx file  report is written.");
    zip = spawn('zip',['-P', '12345' , 'archive.zip', 'report.xlsx']);
    zip.on('exit', function(code) {
       res.end(zip);
    });
  })
})
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы