博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浏览器访问路径不提示下载而显示新页面(后端解决方案)
阅读量:7071 次
发布时间:2019-06-28

本文共 1936 字,大约阅读时间需要 6 分钟。

前几天有个小伙伴找我,他在项目中想让一个视频文件点击下载时不是弹出新页面,而是提示下载,问我咋整。其实,解决办法很简单,就是在后端设置Content-Typeapplication/octet-stream,因为也不是一个小伙伴问过我这问题了,所以写个DEMO给大家参考参考

素材:

以nodejs代码为例,我将实现访问"/video"时跳转到浏览器的自带播放页面,

当访问"/frag_bunny.mp4"时弹出下载提示

代码:

var http = require('http');var fs = require('fs');var url = require('url');var routes = {//<====路由    "/video"(request, response) {        fs.readFile("frag_bunny.mp4", 'binary', function (err, data) {            if (err) {                console.log(err);                response.writeHead(500, { 'Content-Type': 'text/html' });            } else {                response.writeHead(200, { 'Content-Type': 'video/mp4' });//<====mp4标识                response.write(data, 'binary');            }            response.end();        });    },    "/frag_bunny.mp4"(request, response) {        fs.readFile("frag_bunny.mp4", 'binary', function (err, data) {            if (err) {                console.log(err);                response.writeHead(500, { 'Content-Type': 'text/html' });            } else {                response.writeHead(200, { 'Content-Type': 'application/octet-stream' });//<====文件流标识                response.write(data, 'binary');            }            response.end();        });    },    "/"(request, response) {        response.writeHead(200, { 'Content-Type': 'text/html' });         response.write(`            打开页面显示播放界面            
打开页面提示下载 `); response.end(); }, "/404"(request, response) { response.writeHead(404, { 'Content-Type': 'text/html' }); response.write("404"); response.end(); }}// 创建服务器http.createServer(function (request, response) { // 解析请求,包括文件名 var pathname = url.parse(request.url).pathname; // 输出请求的文件名 console.log("Request for " + pathname + " received."); route = routes[pathname] if (route) { route(request, response); } else { routes["/404"](request, response); }}).listen(8889);

转载地址:http://rfell.baihongyu.com/

你可能感兴趣的文章
Android ListView的使用
查看>>
Hyper-V:无法打开虚拟机XXX,因为虚拟机监控程序未运行
查看>>
FastSocket学习笔记~制定自已的传输协议~续~制定基于FastSocket的协议
查看>>
数据仓库专题(24)-数据仓库架构体系总结
查看>>
高通470亿美元收购恩智浦获反垄断机构许可
查看>>
360搜索回归360母品牌 安全搜索才“靠谱”
查看>>
《stm32嵌入式系统开发实战指南》一1.2 Cortex内核系列处理器技术特点
查看>>
干掉APT的是人 不是技术
查看>>
苹果确认iOS 10存在安全漏洞
查看>>
江西推进11个 全国智慧城市试点
查看>>
云通信初创企业Twilio启动IPO Uber和Airbnb均是其客户
查看>>
为什么发展中国家更关注智慧城市?
查看>>
W3C准备将DRM定为Web标准
查看>>
神秘数据挖掘独角兽Palantir说准备好要上市,但明年盈利的豪言有点虚
查看>>
全球3600万部安卓设备遭“Judy”恶意软件入侵
查看>>
Redis持久存储-AOF&RDB
查看>>
存储已向云上转移 平台化存储更加灵活
查看>>
ONF执行主席Dan Pitt:下一个战争可能是控制器
查看>>
引狼入室,给中国云市场引来了什么?
查看>>
360强力卸载能不能卸载360?我们从360美国退市说起
查看>>