我不能在我的生活中获得一个下载对话框,而不是直接下载我的节点应用程序中的文件。
我的问题代码如下:
app.get(`/search/download`, function(req, res){
var request = require(`request`);
request({uri: `http://some.csv.file`, headers: {`content-type`: `text/csv`}}
, function(err, response, body) {
res.set(`Content-Disposition`, `attachment; filename="search-results.csv"`);
res.set(`Content-Type`, `text/csv`);
res.send(body);
});
}
无论我改变什么,Chrome和Safari都会立即下载文件而不是打开保存对话框。
答案 0 :(得分:2)
将内容类型从text/csv
更改为application/octet-stream
。
app.get(`/search/download`, function(req, res){
var request = require(`request`);
request({uri: `http://some.csv.file`, headers: {`content-type`: `text/csv`}}
, function(err, response, body) {
res.set(`Content-Disposition`, `attachment; filename="search-results.csv"`);
res.set(`Content-Type`, `application/octet-stream`);
res.send(body);
});
}
答案 1 :(得分:0)
有一种更简单的方法可以做同样的事情(如果服务的文件是静态的):
app.use(express.static(__dirname + '/some.csv.file', {
setHeaders: function(res, path) {
res.set('Content-Disposition', 'attachment; filename="search-results.csv"');
res.set('Content-Type', 'application/octet-stream');
}
})