我想使用Axios / Node.js下载大量图像
这是我用来下载图像并将其保存到磁盘的代码:
exports.DownloadImages = function (provider, data) {
data.forEach(function (vehicle) {
var images = vehicle.Gallery;
images.forEach(function (image) {
const url = transformation.replaceAll(image, '[size]', 'original');
const filename = transformation.replaceAll(transformation.ImageFilename(url), '[size]', 'original');
const writer = fs.createWriteStream('./export/' + provider + '/' + filename);
api.get(url, { responseType: 'stream' }).then((response) => {
response.data.pipe(writer);
})
.catch((error) => {
console.error('[HELPER] DownloadImages ' + error + ' on Image ' + url);
});
});
});
};
在我目前的测试中,我正在下载大约500张图像,我会说80%的图像已正确下载并保存,但是在日志中却出现了一些错误:
[HELPER] DownloadImages Error: read ECONNRESET on Image https:\\xxxx.com\imageurl.png
当我查看下载的图像时,似乎其中一些图像仅被部分下载(例如,我可以看到图像的顶部,但其余部分丢失了)
编辑:
我已将以下内容添加到我的axios get请求中,这似乎有所帮助:
httpsAgent: new https.Agent({ keepAlive: true })
但是我现在收到以下错误:
Error: socket hang up
Error: Client network socket disconnected before secure TLS connection was established
答案 0 :(得分:0)
所以事实证明我正在最大化我的TCP连接。
我使用这个库设置了一个限制,因此它与Axios一起批量处理,这为我解决了这个问题