Node.js的图片下载和本地图片拷贝的功能:
实现下载的功能,用的是node.js的get方法
var http =require('http'); //引入http模块 var url='http://img2.niutuku.com/desk/1208/1445/ntk-1445-9697.jpg'; //图片的路径 http.get(url,function (res) { res.setEncoding('binary');//设置图片的保存格式(二进制) var image=''; res.on('readable',function () { console.log(res.statusCode); //状态码 }).on('data',function (chunk) { image+=chunk; }).on('end',function () { var fs =require('fs'); //fs模块 fs.writeFile('111.jpg',image,'binary',function (err) { if(err) { console.log('保存失败'); } else{ console.log('保存成功'); } }); }); });对于拷贝文件,我们用到了node.js的流的概念
createReadStream('文件名'),可读流
createWriteStream('创建的文件名') 可写流
var fs =require('fs'); var readableStream =fs.createReadStream('./111.jpg');//创建可读流(已经存在的) var writeStream =fs.createWriteStream('ouye.jpg');//创建可写流(不存在,是空的); readableStream.on('data',function (chunk) { if(!writeStream.write(chunk))//写入流 readableStream.pause();//暂停读 }).on('end',function () { console.log('拷贝成功'); }); writeStream.on('drain',function () { console.log('写入完成');//写入一块完成,一个文件可以有多块组成,也可以理解成进度,比如每块对应的进度为20% readableStream.resume();//继续读 });//监听写入是否完成;当然了我们也可以用更简单的方法实现上面的功能,就是管道的概念,pipe,这样的写入方式,不需要去监听写入的进度,代码更加的简洁和有逻辑
var fs =require('fs'); var read =fs.createReadStream('111.jpg'); var write =fs.createWriteStream('222.jpg'); //管道的方式,把数据连接起来 read.pipe(write);对于管道pipe,还可以用在读取html文档的地方,相对于readFile方法来说,也简洁很多
var fs=require('fs');//fs模块 var http =require('http');//http模块 http.createServer(function (req,res) { var stream =fs.createReadStream('./form.html');//可读流 stream.pipe(res);//res是可写流的实例 //这样的方式,和读取html文档是一个结果 }).listen(3000,function () { console.log('server listen on 3000'); });其实我们对于可读流和可写流,还有管道的认识,将来可能会有更多的用处,随着node.js的学习,再进一步来完善自己的node.JS的体系