详解node.js 下载图片的 2 种方式
具体代码如下所示:
varrequest=require("request"); varfs=require("fs"); functiondownload1(url,filename,fn){ request(url).pipe(fs.createWriteStream(filename).on("close",function(err,res){ if(err){ console.log(err); }else{ fn&&fn(); } })) } functiondownload2(url,filename,fn){ request.get({uri:url,encoding:'binary'},function(err,res){ if(!err){ fs.writeFile(filename,res.body,"binary",function(err,res){ if(!err){ fn&&fn(); }else{ console.log(err); } }) } }) }
ps:下面看下nodejs下载远程图片的实现代码,具体代码如下所示:
varexpress=require('express'); varrequest=require('request'); varhttp=require('http'); varurl=require('url'); varfs=require("fs"); varrouter=express.Router(); /*GEThomepage.*/ router.get('/',function(req,res,next){ varurl="http://www.valu.cn/images/1.gif"; //request('http://www.valu.cn/images/1.gif').pipe(fs.createWriteStream('./public/upload/downImg/logonew.png')); varreq=http.get(url,function(res){ varimgData=""; res.setEncoding("binary");//一定要设置response的编码为binary否则会下载下来的图片打不开 res.on("data",function(chunk){ imgData+=chunk; }); res.on("end",function(){ fs.writeFile("./public/upload/downImg/logonew.png",imgData,"binary",function(err){ if(err){ console.log("保存失败"); } console.log("保存成功"); }); }); res.on("error",function(err){ console.log("请求失败"); }); }); req.on('error',function(err){ console.log("请求失败2"+err.message); }); res.render('index',{title:'首页2'}); }); module.exports=router;
总结
以上所述是小编给大家介绍的node.js下载图片的2种方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!