微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

res.download 错误请求在大型 zip 文件 express、fast-csv、zip 上中止

如何解决res.download 错误请求在大型 zip 文件 express、fast-csv、zip 上中止

我正在使用 fast-csv 将数据从 mongodb 转换为 CSV 格式,然后将其保存到产品文件夹中,其中还存在所有横幅图像。因此,我正在压缩包含所有横幅图像和 CSV 文件的产品文件夹,并返回带有 res.download 的 zip 文件作为 API 调用的响应。

以下代码只包含必要的部分。

import * as csv from "fast-csv";
const ws = fs.createWriteStream("products/file.csv");

 csv
    .write(data,{
        headers: [
          "_id","name","description","banner",],})
      .on("finish",function () {
        // console.log("Write to csv successfully!");
      })
      .pipe(ws)
      .on("close",async function () {
        try {
          if (!fs.existsSync("tmp")) {
            fs.mkdirsync("tmp");
          }
          await zipDir("products","tmp/zipfile.zip");
          res.download("tmp/zipfile.zip","products.zip",async function (err) {
            if (err) {
              console.error(err);
            }
          });
        } catch (error) {
          console.error(error);
        }
      });

代码在产品较少且 zip 文件较小时有效,但对于较大的 zip 文件失败并出现错误

Error: Request aborted
    at onaborted (/home/user/project/node_modules/express/lib/response.js:1025:15)
    at Immediate._onImmediate (/home/user/project/node_modules/express/lib/response.js:1067:9)
    at processImmediate (internal/timers.js:461:21) {
  code: 'ECONNABORTED'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。