欢迎您访问宜州一中 您可以登录 或注册
 
收藏本站 简繁转换
筑梦青春•唱响未来 -宜州区第一中学英文歌曲合唱比赛             一方天地育桃李,三尺讲台竞风采             宜州区一中在宜州博物馆举行“人杰地灵读宜州”故事分享会             宜州一中举行2024届中考百日誓师大会             龙腾启新 筑梦未来 ——宜州区第一中学欢庆2024年元旦文艺晚会             走进嘉联丝厂 畅享研学之乐 ——宜州区第一中学开展研学实践活动             2023年河池市宜州区第一中学/宜州区红卫学校家庭经济困难大学新生入学资助项目发放名册(第二批)             展科技志向,圆飞行梦想 ——宜州区一中2025届举行无人机大赛             2023年河池市宜州区第一中学\红卫学校 家庭经济困难大学新生入学资助项目发放名册(第一批)             法制进校园 以法促成长 ——宜州一中举行“三姐护蕾”法治进校园活动            

DoraCMS

您现在的位置是:首页>文档内容页

文档详情

第9天response 响应渲染 —download插件开发

doramart 2024-05-22 02:45:38 技术文档231485
下载插件的作用是让客户接收响应时,不是把内容显示在网页上,而是下载到本地。这个插件知道原理后,其实很简单,通过设置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)

视频演示



文章评论

取消回复
登录 参与评论

评论列表(