【问题标题】:How to stop a writestream from creating a file when receiving 403 error with axios使用axios收到403错误时如何阻止writestream创建文件
【发布时间】:2021-01-18 04:45:01
【问题描述】:

我正在使用 axios 下载图像并保存在本地。我从https://stackoverflow.com/a/61269447/7468791 那里得到了以下答案,它非常适合较大的图像,以确保它们在编写之前已完全下载。

但是,一些图片网址返回 403 错误。我仍然得到为这些创建的图像文件,尽管是一个空文件。我该如何调整代码,以便在 get 请求收到 403 错误时不会尝试编写任何内容?

export async function downloadFile(fileUrl: string, outputLocationPath: string) {
const writer = createWriteStream(outputLocationPath);

return Axios({
  method: 'get',
  url: fileUrl,
  responseType: 'stream',
}).then(response => {

  //ensure that the user can call `then()` only when the file has
  //been downloaded entirely.

  return new Promise((resolve, reject) => {
    response.data.pipe(writer);
    let error = null;
    writer.on('error', err => {
      error = err;
      writer.close();
      reject(err);
    });
    writer.on('close', () => {
      if (!error) {
        resolve(true);
      }
      //no need to call the reject here, as it will have been called in the
      //'error' stream;
    });
  });
});

}

【问题讨论】:

    标签: javascript node.js error-handling axios createwritestream


    【解决方案1】:

    响应代码应该在 response.status 中可用,然后您可以检查并有条件地拒绝该承诺。

    【讨论】:

    • 抱歉回复晚了,感谢您的回复!我确实尝试获取响应状态并将其输出到控制台作为测试。 200 个状态正在打印状态代码,但 403 个状态没有。我会重新审视我的代码:)
    猜你喜欢
    • 2023-01-30
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-05
    相关资源
    最近更新 更多