本文主要是使用nodejs处理图片等资源返回给浏览器显示方法,但不只限制于图片,也可以是音频视频等其他非字符串文件的返回和显示。也可以扩展成nodejs静态资源服务器的开发方法。
<强>请求头说明强>
在http响应里面有几个重要的东西,内容类型说明文件渲染MIME类型,这是我们本文的相关处理关键。
常用的MIME类型
{ :“css文本/css ", :“gif图像/gif”, “html”:“text/html”, “图标”:“图像/x图标”, :“jpeg图像/jpeg”, :“jpg图像/jpeg”, “js”:“text/javascript”, “json”:“application/json”, “pdf”:“应用程序/pdf”, :“png图像/png”, :“svg图像/svg + xml”, “主权财富基金”:“应用程序/x-shockwave-flash”, :“tiff图像/tiff”, “三”:“text/plain”, :“wav音频/x-wav”, :“wma音频/x-ms-wma”, :“wmv视频/x-ms-wmv”, “xml”:“text/xml” }
<强>处理方法强>
原理:
使用node . js的fs。readFile来处理,根据请求地址,转换成实际的文件地址。判断文件是否存在,不存在返回404年,存在则读取文件,并返回文件
//设置请求的返回头类型、内容的类型类型列表见上面 响应。setHeader(“内容类型”,contentType);//格式必须为二进制否则会出的错 var=fs.readFileSync内容(url,“二进制”); 响应。writeHead(200年,“Ok”); response.write(内容、“二进制”);//格式必须为二进制,否则会出的错response.end ();
原理:
使用nodejs的fs.createReadStream来处理,这样处理的好处是断点续传。
响应。设置(“内容类型”,mimeType);//设置返回类型 var=fs。createReadStream (imageFilePath); var responseData=https://www.yisu.com/zixun/[];中//存储文件流 如果(流){//判断状态 流。(“数据”,函数(块){ responseData。中推动(块); }); 流。(“结束”,函数(){ var finalData=https://www.yisu.com/zixun/Buffer.concat (responseData)中; 响应。写(finalData); response.end (); }); }
1。客户端读取文件var=fs.createReadStream内容(filePath);
2.把内容转为数组var缓冲区=new缓冲区(内容);传给httpServer这一步需要特别注意,一定不能把内容当成普通的字符串处理传给httpServer
3.httpServer解析出数列表组var=?br/>
4.httpServer把数组转为缓冲区,var缓冲区=new缓冲区(列表);
5.返回response.write (buffer.toString()、“二进制”);//注意,这里必须转为字符串,不能以缓冲传给浏览器。
6.值得注意的是,这里的缓冲区不能直接返回给客户端,nodejs以二进制格式读取的文件就是一个字符串,只是编码不是普通的utf - 8
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。