“管道中的未手动流误差” - 使用Express的request.js下载过多的文件下载



我正在尝试下载多个图像。

有时下载10张照片,有时下载500张照片,以下错误。

我必须找到一个解决方案。

internal/streams/legacy.js:59
  throw er; // Unhandled stream error in pipe.
  ^
Error: read ECONNRESET
 at _errnoException (util.js:1024:11)
 at TCP.onread (net.js:615:25)

数据具有图像下载url。

    let arrDatas = [];
    datas.map(data => {
      arrDatas.push(
        new Promise((resolve, reject) => {
          request.head(data.url, (err, res, body) => {
            if (!err && res.statusCode === 200) {
              let imgType;
              if (
                res.headers["content-type"] ===
                "application/octet-stream"
              ) {
                imgType = "jpeg";
              } else {
                imgType = res.headers["content-type"].split("/")[1];
              }
              request({
                url: data.url,
                headers: {
                  "Keep-Alive": "max=2000"
                }
              })
                .pipe(
                  fs.createWriteStream(
                    "server/downloads/" + createUniqueSHA1String() + "." + imgType
                  )
                )
                .on("close", close => {
                  resolve(true);
                });
            } else {
              resolve(false);
            }
          });
        })
      );
    });

     Promise.all(arrDatas).then(result => {
      res.json(result);
     })
     .catch(err => {
       res.status(500).json(err.message);
     });

任何人可以帮我吗?

看来,另一个端点正在过早结束连接,请看一下:节点JS econnreset

最新更新