node.js如何以数据块形式读取文件

发布时间:2020-01-05编辑:脚本学堂
本文介绍了node.js中以数据块形式读取文件的方法,Node天生的异步机制,让响应可以逐步产生,Node允许以数据块的形式往响应中写数据,也允许以数据块的形式读取文件。

node.js以数据块形式读取文件

在node中,http响应头信息中transfer-encoding默认是chunked。

Transfer-Encoding:chunked
Node天生的异步机制,让响应可以逐步产生。
这种发送数据块的方式在涉及到io操作的情况下非常高效。Node允许以数据块的形式往响应中写数据,也允许以数据块的形式读取文件。
这样可以有高效的内存分配,不需要把文件全部读取到内存中再全部响应给客户,在处理大量请求时可以节省内存。

例子:
 

复制代码 代码示例:

var http = require('http');
var fs = require('fs');

http.createServer(function(req,res){
res.writeHead(200,{'Context-Type':'image/png'});
var imagePath = 'D:/home.png';
var stream = fs.createReadStream(imagePath);
//一块一块的读取数据
stream.on('data',function(chunk){
   res.write(chunk);
});

stream.on('end',function(){
   res.end();
}); // www.jb200.com

stream.on('error',function(){
  res.end();
});
}).listen(3000);

Node.js还有一个更简洁的方法pipe(),例子:
 

复制代码 代码示例:

var http = require('http');
var fs = require('fs');

http.createServer(function(req,res){
    res.writeHead(200,{'Context-Type':'image/png'});
    var imagePath = 'D:/home.png';
    var stream = fs.createReadStream(imagePath);
    stream.pipe(res);
   
}).listen(3000);