Node.js的学习日记 图片简单下载和拷贝功能的实现 简单下载和拷贝

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的体系








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值