最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

浏览器如何判断是下载文件还是打开文件

业界 admin 1浏览 0评论

当直接访问的某个文件时,如果该文件是二进制等浏览器无法解析的文件,浏览器才会下载该文件,但如果浏览器可以自己解析该文件,则它会打开该文件并以自己的方式呈现出来,而不会下载,此时就需要设置消息响应头,告诉浏览器该文件需要下载而不是简单的打开。

/* GET home page. */
router.get('/', function(req, res, next) {
    var fileType = req.query.fileType;
    var fileName = req.query.fileName;

    if (fileType == 1) {
        //直接访问文件进行下载
        res.redirect(fileName);
    } else if (fileType == 2) {
        //以文件流的形式下载文件
        var filePath = path.join(__dirname, '../public/' + fileName);
        var stats = fs.statSync(filePath);
        var isFile = stats.isFile();
        if(isFile){
            res.set({
                'Content-Type': 'application/octet-stream',
                'Content-Disposition': 'attachment; filename=' + fileName,
                'Content-Length': stats.size
            });
            fs.createReadStream(filePath).pipe(res);
        } else {
            res.end(404);
        }
    } else {
        res.end(404);
    }
});
复制代码

转载于:https://juejin.im/post/5c3711f05188252547422157

当直接访问的某个文件时,如果该文件是二进制等浏览器无法解析的文件,浏览器才会下载该文件,但如果浏览器可以自己解析该文件,则它会打开该文件并以自己的方式呈现出来,而不会下载,此时就需要设置消息响应头,告诉浏览器该文件需要下载而不是简单的打开。

/* GET home page. */
router.get('/', function(req, res, next) {
    var fileType = req.query.fileType;
    var fileName = req.query.fileName;

    if (fileType == 1) {
        //直接访问文件进行下载
        res.redirect(fileName);
    } else if (fileType == 2) {
        //以文件流的形式下载文件
        var filePath = path.join(__dirname, '../public/' + fileName);
        var stats = fs.statSync(filePath);
        var isFile = stats.isFile();
        if(isFile){
            res.set({
                'Content-Type': 'application/octet-stream',
                'Content-Disposition': 'attachment; filename=' + fileName,
                'Content-Length': stats.size
            });
            fs.createReadStream(filePath).pipe(res);
        } else {
            res.end(404);
        }
    } else {
        res.end(404);
    }
});
复制代码

转载于:https://juejin.im/post/5c3711f05188252547422157

发布评论

评论列表 (0)

  1. 暂无评论