javascript - node 抓图,图片下载不完全
问题描述
使用node request模块批量抓取图片,但是发现有些图片下载的不完全,图片一部分显示正常,一部分是灰色的。而且图片下载不全也是随机出现,不一定是哪一张。代码如下:
var arr=['http:www.a.com/1.png','http:www.a.com/2.png','http:www.a.com/3.png'....]for(var i=0;i<30;i++){ lodPic(arr[i])}function loadPic(url){ var _url=encodeURI(url); request.head(_url,function(err,res,body){if(err){ console.log(err);}request(url).pipe(fs.createWriteStream(ph)).on(’close’,function(){ console.log(’finfish’);});; });}
问题解答
回答1:var request = require(’request’);var options = { url: ’https://api.github.com/repos/request/request’, headers: { ’content-length’: 1024, }};function callback(error, response, body) { //}request(options, callback);
看代码,把content-length设置的再大一点试试,我之前用cpp写静态服务器的时候遇到过,有的图片比这个值要大,所以只有一半被传输成功。而有的图片比这个值小,所以能传输完整。不知道你也是不是这个问题。
回答2:可能 30 个并发写入磁盘有点问题,题主试试减少并发数量?或者试试 async.js 的 parallelLimit() ?
回答3:http的HEAD方法是没有响应主体的,你用这个http方法请求图片肯定什么都拿不倒。
相关文章:
![android - MVP模式 包的结构](http://www.haobala.com/attached/image/news/202311/095852d398.png)