javascript - 使用axios接收到403错误时如何停止writestream创建文件

标签 javascript node.js error-handling axios createwritestream

我正在使用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;
    });
  });
});
}

最佳答案

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

关于javascript - 使用axios接收到403错误时如何停止writestream创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64172685/

相关文章:

swift - 如何处理函数返回值的错误

python - 使用 Openpyxl 进行迭代时出现 MemoryLoadError

javascript - 组合框在值更改时不刷新

javascript - html 中的自毁按钮

node.js - 如果在 lambda Node 场景中捕获错误,则继续 Promise.all 循环

node.js - DDD 和 Node.js : Good practice to have a repository with async callbacks?

javascript - 如何处理JavaScript中的console.log和错误输出?

javascript - SharePoint 2013 onclick 未触发 - 而是加载 #

javascript - 使用 BringToFront() 时图像覆盖状态丢失 : leaflet

node.js - 按值搜索 redis 哈希