【发布时间】:2016-08-24 12:18:13
【问题描述】:
我为我的大学项目建立了一个节点/快递网站,在搜索法律的 ID 后,它会显示一个大表,其中包含与此 ID 相关的不同格式和语言的所有文件。 我使用模块“http-proxy”来请求这些文件并将其提供给客户端。 提供 xml、xhtml、html 和 pdf 文件时没有任何问题(每个浏览器都可以直接查看它们)。 我对 .zip 和 .rdf 文件有疑问。文件未损坏,但丢失了原始名称
- 当我点击 ZIP 图标时,它给了我下载提示,但我丢失了原始文件名(文件将被称为“proxy”或“proxy.zip”,不同浏览器上的行为不同)李>
- 当我点击RDF图标时,有些浏览器直接在浏览器中打开文件,有些浏览器无法识别格式,有些浏览器想用名称“代理”下载它)
所以我发现了标签“a”的 HTML5 属性“下载”。它只是解决了我的问题,但不是每个版本的 Internet Explorer 和 Safari 都支持它。在网上冲浪时,我发现了一些解决方法,可以在 IE 或 Safari 中查看页面时在 div 链接后添加“右键单击并另存为...”,但此解决方案不适合我,因为我不是在谈论单个链接,但一个充满链接的表。而且我的网站也需要在手机上运行。
有没有办法编写一些服务器端代码来强制浏览器下载具有自定义文件名的文件?
这是代理的一小段代码:
var httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer({ ignorePath: true });
app.get('/proxy', function(req , res) {
var file = req.query.file;
var realurl = 'http://'+cfg.edb_opt.host+':'+cfg.edb_opt.port+cfg.edb_opt.rest+file;
console.log('Proxy: serving '+realurl);
proxy.web(req, res, { 'target': realurl });
});
所有 cfg* 变量都来自一个 json 配置文件,用于设置文件所在的主机、端口和起始路径。
提前致谢:)
【问题讨论】:
标签: javascript node.js express download proxy