第9天response 响应渲染 —download插件开发
下载插件的作用是让客户接收响应时,不是把内容显示在网页上,而是下载到本地。这个插件知道原理后,其实很简单,通过设置response信息头就可做到。
download插件开发
下载插件的作用是让客户接收响应时,不是把内容显示在网页上,而是下载到本地。这个插件知道原理后,其实很简单,通过设置response信息头就可做到。这个插件,我们设置了响应信息头中3个属性,Content-disposition
下载的附件文件名称、 Content-Type
下载文件的类型 、 Content-Length
下载文件的大小,设置好这些之后,基本的下载功能就完成了。下面是详细的插件源代码。
lib/download.js
源代码
module.exports = function(req,res,next){ res.download = function(fileName,buf){ // 判断buf是否是Buffer对象 if(Buffer.isBuffer(buf)){ res.writeHead(200, { // 设置下载文件名称 'Content-disposition': 'attachment; filename=' + fileName, // 保证是二进制类型,这样浏览器可用下载方式 'Content-Type': 'application/octet-stream', // 设置buf大小 'Content-Length': buf.length }); res.write(buf); res.end(); }else{ res.end(); } } next(); }
index.js
文件加入以下代码:
exports.download = require("./lib/download");
到此为止,download中间件就开发完毕了,下面做一个实例,看看使用效果。
var fk = require("../..") ,App = fk.App ,download = fk.download ,app = new App; // 加载download插件 app.use(fk.download); app.get("/down",function(req,res){ var buf = new Buffer("nihao"); res.download("my.o",buf); }) app.listen(3000)
视频演示
很赞哦! ( 0
)