Node.js下载大量图片总结

Node.js下载图片

  • 使用了request来作为请求图片数据
  • 将图片保存到本地
	var path = require('path');
	var fs = require('fs');
	var request = require('request');

	let imgUrl = 'http://img.jpg';
	function downloadFile(imgPath,callback){
		let fileName = path.basename(imgPath);
		let fileDownloadPath = './image'+fileName;
		let exist = fs.existsSync(fileDownloadPath);
		if(!exist){
			let writeStream = fs.createWriteStream(fileDownloadPath);
			let readStream = request(imgPath);
			readStream.pipe(writeStream);
			readStream.on('end', function () {
				readStream.end();
				callback(null, 'success');
				// console.log(`文件下载成功${fileDownloadPath}`);
			});
			readStream.on('error', function (error) {
				writeStream.end();
				fs.unlinkSync(fileDownloadPath);
				// console.log(`错误信息:${error}`);
				// 下载失败的,重新下载TODO
				readStream.end();
				callback(null, 'fail');
				setTimeout(() => {
					bagpipe.push(downloadFile, imgPath, function (err,data) {
					});
				}, 5000);
			})
			writeStream.on("finish", function () {
				readStream.end();
				writeStream.end();
			})
			.on('error',function(err){
				readStream.end();
				writeStream.end();
				// console.log(`文件写入失败}`);
			});
		}else{
			console.log('this file is existed');
		}
	}
	

下载队列使用bagpipe

	var Bagpipe = require('bagpipe');
	var bagpipe = new Bagpipe(100);

	let imgList = [imgUrl,imgUrl,...];
	imgList.foreach(path => {
	 	bagpipe.push(downloadFile, path, function (err, data) {
			// console.log(data);
		});   
   });

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值