nodejs从远程服务器获取文件输出到客户端

lopcomvir
lopcomvir 发布于 2017-01-05 00:06:04 浏览:256 类型:原创 - 随笔 分类:Node.js - 前端经验 二维码: 作者原创 版权保护
本demo是基于express框架的网站程序
此处用发送http请求的方式下载文件

引入http组件
var http = require('http');

然后执行http请求
router.get('/download/material', function (req, res) {
    if (req.query.id) {
        //我的文件信息存在数据库,所以要先拿到文件信息
        materialservice.getmaterial(req.query.id, function (material) {
            if (material) {
                /*
                material={
                    Url:"#存在远程服务器的文件链接",
                    OriginalName:"#文件原名"
                }
                */
                var client_res = res;
                var body;
                http.request({ host: "localhost", port: 1337, method: "get", path: material.Url}, function (res) {
                    res.on("data", function (d) {
                        body=d;//Uint8Array
                    }).on("end", function () {
                        //设置响应内容类型为文件流,浏览器端表现为下载文件
                        client_res.contentType("application/octet-stream");
                        //设置文件名,注意名称需要进行url编码
                        client_res.setHeader("Content-Disposition", "attachment;filename=" + encodeURI(material.OriginalName));
                        //结束本次请求,输出文件流
                        client_res.end(body);
                    });
                }).on("error", function () {
                    client_res.sendStatus(500);
                }).end();
            } else {
                res.sendStatus(404);
            }
        });
    } else {
        res.sendStatus(404);
    }
});
z
给个赞 0 人点赞
收藏 1 人收藏
评论 已有 0 条评论;以下用户言论只代表其个人观点,不代表 前端网(QDFuns) 的观点或立场。
登录 以后才能发表评论
最新评论
还没有任何评论呢,赶紧抢先来一发吧!
lopcomvir lopcomvir 作者

GitHub:https://github.com/comvir

作者最新