MEAN Stack 无法使用 res.sendFile() 下载文件
Can't download file using res.sendFile() by MEAN Stack
这是我的路由文件xx.js
app.route('/api/xx/download')
.get(function (req, res) {
var mimetype = mime.lookup('/xx/assets/data/demo.png');
res.setHeader('Content-disposition', 'attachment; filename=demo.png');
console.log('mimetype', mimetype);
res.setHeader('Content-type', mimetype);
res.sendFile('/xx/assets/data/demo.png')
});
下面是我从终端得到的:
mimetype image/png
Sat, 13 Feb 2016 04:00:52 GMT express deprecated res.sendfile: Use res.sendFile instead at packages/custom/xx/server/routes/xx.js:32:13
Error: ENOENT: no such file or directory, stat '/xx/assets/data/demo.png'
at Error (native)
但我可以通过 link 访问此文件:http://localhost:3000/xx/assets/data/demo.png
我正在使用 MAC OS X EI Captian 10.11.2
我的 MEAN.IO 版本是 0.5.5
我找到了一种不用res.sendFile()下载文件的方法,你可以使用fs.createReadStream(file)或res.download(file),两者都可以解决这个问题。
fs.createReadStream(文件):
var mime = require('mime');
var fs = require('fs');
var path = require('path');
app.route('/api/xx/download').get(function (req, res) {
var file = __dirname + '/../../public/assets/data/demo.png';
var filename = path.basename(file);
var mimetype = mime.lookup(file);
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
console.log('mimetype', mimetype);
res.setHeader('Content-type', mimetype);
var filestream = fs.createReadStream(file);
filestream.pipe(res);
});
res.download(文件):
使用 Express res.download 让生活更轻松
app.route('/api/xx/download')
.get(function (req, res) {
var file = __dirname + '/../../public/assets/data/demo.png';
res.download(file);
});
这是我的路由文件xx.js
app.route('/api/xx/download')
.get(function (req, res) {
var mimetype = mime.lookup('/xx/assets/data/demo.png');
res.setHeader('Content-disposition', 'attachment; filename=demo.png');
console.log('mimetype', mimetype);
res.setHeader('Content-type', mimetype);
res.sendFile('/xx/assets/data/demo.png')
});
下面是我从终端得到的:
mimetype image/png
Sat, 13 Feb 2016 04:00:52 GMT express deprecated res.sendfile: Use res.sendFile instead at packages/custom/xx/server/routes/xx.js:32:13 Error: ENOENT: no such file or directory, stat '/xx/assets/data/demo.png' at Error (native)
但我可以通过 link 访问此文件:http://localhost:3000/xx/assets/data/demo.png
我正在使用 MAC OS X EI Captian 10.11.2 我的 MEAN.IO 版本是 0.5.5
我找到了一种不用res.sendFile()下载文件的方法,你可以使用fs.createReadStream(file)或res.download(file),两者都可以解决这个问题。
fs.createReadStream(文件):
var mime = require('mime');
var fs = require('fs');
var path = require('path');
app.route('/api/xx/download').get(function (req, res) {
var file = __dirname + '/../../public/assets/data/demo.png';
var filename = path.basename(file);
var mimetype = mime.lookup(file);
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
console.log('mimetype', mimetype);
res.setHeader('Content-type', mimetype);
var filestream = fs.createReadStream(file);
filestream.pipe(res);
});
res.download(文件):
使用 Express res.download 让生活更轻松
app.route('/api/xx/download')
.get(function (req, res) {
var file = __dirname + '/../../public/assets/data/demo.png';
res.download(file);
});