Node以数据块的形式读取文件
在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();
    });
    stream.on('error',function(){
        res.end();
    });
}).listen(3000);
Node还提供了一个更简洁的方法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);
  
Node以数据块的形式读取文件的更多相关文章
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
		python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ... 
- Ext2文件系统布局,文件数据块寻址,VFS虚拟文件系统
		注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ... 
- 时序数据库 Apache-IoTDB 源码解析之文件数据块(四)
		上一章聊到行式存储.列式存储的基本概念,并介绍了 TsFile 是如何存储数据以及基本概念.详情请见: 时序数据库 Apache-IoTDB 源码解析之文件格式简介(三) 打一波广告,欢迎大家访问Io ... 
- 使用FileReader接口读取文件内容
		如果想要读取或浏览文件,则需要通过FileReader接口,该接口不仅可以读取图片文件,还可以读取文本或二进制文件,同时,根据该接口提供的事件与方法,可以动态侦察文件读取时的详细状态,接下来,我们详细 ... 
- HTML5的File API读取文件信息
		html结构: <div id="fileImage"></div> <input type="file" value=" ... 
- ORACLE体系结构一  (逻辑结构)-表空间、段、区和数据块
		一.Oracle的逻辑结构 Oracle的逻辑结构是一种层次结构.主要由:表空间.段.区和数据块等概念组成.逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构.数据库存储层次结构 ... 
- HDFS源码分析心跳汇报之数据块增量汇报
		在<HDFS源码分析心跳汇报之BPServiceActor工作线程运行流程>一文中,我们详细了解了数据节点DataNode周期性发送心跳给名字节点NameNode的BPServiceAct ... 
- ORACLE体系结构逻辑结构-表空间、段、区和数据块
		转自: https://www.cnblogs.com/sunziying/p/8994792.html 一.Oracle的逻辑结构 Oracle的逻辑结构是一种层次结构.主要由:表空间.段.区和数据 ... 
- H5 FileReader读取文件
		<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
随机推荐
- 横竖屏切换时候Activity的生命周期的总结
			1.新建一个Activity,并把各个生命周期打印出来 2.运行Activity,得到如下信息 onCreate--> onStart--> onResume--> 3.按crtl+ ... 
- 使用 CSS 媒体查询创建响应式网站
			简介 现今每天都有更多的手机和平板电脑问市.消费者能够拥有可想象到的各种规格和形状的设备,但是网站开发人员却面临一个挑战:如何使他们的网站在传统浏览器.手机和平板电脑浏览器上有很好的效果,如何在各种大 ... 
- CodeForces 686A-Free Ice Cream
			题目: 儿童排队领冰激凌,给你两个数n,x分别代表接下来有n行与初始的冰激淋数:接下来n行,每行有一个字符('+'or‘-’),还有一个整数d,+d表示新增的冰激 凌数(由搬运工搬运到此),-d表示儿 ... 
- Hadoop 如何查看是否32位
			1.从哪些地方可以识别hadoop是32位还是64位?2.hadoop本地库在什么位置? hadoop在安装的时候,我们需要知道hadoop版本是32位还是64位. hadoop官网本来提供的都是32 ... 
- Libgdx 开发指南(1) 应用框架
			应用框架 模块 Libgdx包含五个核心接口与操作系统交互,各自实现了如下接口: Application:运行应用,向client通知应用层事件,例如窗口大小的改变(window resizing). ... 
- Unity Sprite转Prefab
			新项目使用Unity5.X,遇到了一些问题,其中就有Sprite的管理更新问题,查了一些资料,Mono推荐的是转为Prefab处理. 看了一些国外同行的处理方法,分析了一个编辑器插件脚本.学到了一些技 ... 
- Caffe 源碼閱讀(三) caffe.cpp
			补:主要函数运行顺序: main>>GetBrewFunction>>train>>Solve 從main函數說起: 1.gflags庫中爲main函數設置usag ... 
- 【转】Flexbox——快速布局神器
			原文转自:http://www.w3cplus.com/css3/flexbox-basics.html 简介 在很多方面HTML和CSS是一个强大的内容发布机制——易学.灵活和强大.但复杂的布局是他 ... 
- MySQL mac 安装
			MySQL mac的安装着实费了些功夫.最开始想省事用brew 安装,结果总是有问题,原来brew安装MySQL并没那么简单,还要进行一些配置.索性直接到网站下载: http://www.mysql. ... 
- CentOS 6.6 中中文输入法设置
			排版比较乱你,参见 https://www.zybuluo.com/Jpz/note/144597 Linux开发环境配置 安装完系统之后,我们需要设置中文输入法,中文输入法是系统自带的,设置步骤如下 ... 
