【发布时间】: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