nodejs读取图片返回给浏览器显示


Posted in NodeJs onJuly 25, 2019

本文主要是使用nodejs处理图片等资源返回给浏览器显示方法,但不只限制于图片,也可以是音频视频等其他非字符串文件的返回和显示。也可以扩展成nodejs静态资源服务器的开发方法。

请求头说明

在http响应里面有几个重要的东西,Content-Type 说明文件渲染MIME类型,这是我们本文的相关处理关键。

常用的MIME类型

{
 "css": "text/css",
 "gif": "image/gif",
 "html": "text/html",
 "ico": "image/x-icon",
 "jpeg": "image/jpeg",
 "jpg": "image/jpeg",
 "js": "text/javascript",
 "json": "application/json",
 "pdf": "application/pdf",
 "png": "image/png",
 "svg": "image/svg+xml",
 "swf": "application/x-shockwave-flash",
 "tiff": "image/tiff",
 "txt": "text/plain",
 "wav": "audio/x-wav",
 "wma": "audio/x-ms-wma",
 "wmv": "video/x-ms-wmv",
 "xml": "text/xml"
}

处理方法

一、静态返回资源

原理:

使用node.js的fs.readFile来处理。根据请求地址,转换成实际的文件地址。判断文件是否存在,不存在返回404,存在则读取文件 ,并返回文件

//设置请求的返回头type,content的type类型列表见上面
response.setHeader("Content-Type", contentType);
//格式必须为 binary 否则会出错
var content = fs.readFileSync(url,"binary"); 
response.writeHead(200, "Ok");
response.write(content,"binary"); //格式必须为 binary,否则会出错
response.end();

二、动态文件流处理

原理:

使用nodejs 的fs.createReadStream来处理,这样处理的好处是断点续传。

response.set( 'content-type', mimeType );//设置返回类型
var stream = fs.createReadStream( imageFilePath );
var responseData = [];//存储文件流
if (stream) {//判断状态
 stream.on( 'data', function( chunk ) {
  responseData.push( chunk );
 });
 stream.on( 'end', function() {
  var finalData = Buffer.concat( responseData );
  response.write( finalData );
  response.end();
 });
}

1.客户端读取文件 var content = fs.createReadStream(filePath);
2.把内容转为数组 var buffer = new Buffer(content); 传给 httpServer这一步需要特别注意,一定不能把 content 当成普通的字符串处理传给 httpServer
3.httpServer 解析出数组 var list = …
4.httpServer 把数组转为 Buffer, var buffer = new Buffer(list);
5.返回 response.write(buffer.toString(),”binary”); //注意,这里必须转为字符串,不能以 Buffer 传给浏览器.
6.值得注意的是,这里的 buffer 不能直接返回给客户端,nodejs 以 binary 格式读取的文件就是一个字符串,只是编码不是普通的 utf-8

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
nodejs实现黑名单中间件设计
Jun 17 NodeJs
轻松创建nodejs服务器(4):路由
Dec 18 NodeJs
轻松创建nodejs服务器(7):阻塞操作的实现
Dec 18 NodeJs
nodejs调用cmd命令实现复制目录
May 04 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
nodejs acl的用户权限管理详解
Mar 14 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 NodeJs
Nodejs技巧之Exceljs表格操作用法示例
Nov 06 NodeJs
关于NodeJS中的循环引用详解
Jul 23 #NodeJs
typescript nodejs 依赖注入实现方法代码详解
Jul 21 #NodeJs
nodejs 递归拷贝、读取目录下所有文件和目录
Jul 18 #NodeJs
nodejs二进制与Buffer的介绍与使用
Jul 11 #NodeJs
nodejs中各种加密算法的实现详解
Jul 11 #NodeJs
监控Nodejs的性能实例代码
Jul 02 #NodeJs
搭建一个nodejs脚手架的方法步骤
Jun 28 #NodeJs
You might like
域名和cookie问题(域名后缀)
2012/10/10 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
2015/11/25 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
javascript获取元素的计算样式
2019/05/24 Javascript
[04:23]DOTA2上海特锦赛小组赛第一日 TOP10精彩集锦
2016/02/27 DOTA
Python中音频处理库pydub的使用教程
2017/06/07 Python
django初始化数据库的实例
2018/05/27 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
浅谈Python的list中的选取范围
2018/11/12 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
python中的unittest框架实例详解
2021/02/05 Python
酒店拾金不昧表扬信
2014/01/18 职场文书
网络工程专业自荐信范文
2014/03/16 职场文书
优秀学生评语大全
2014/04/25 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
个人工作保证书
2015/02/28 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
学术会议开幕词
2016/03/03 职场文书
Vue的生命周期一起来看看
2022/02/24 Vue.js