无法使用MEAN Stack使用res.sendFile()下载文件

时间:2016-02-13 04:23:46

标签: express mean-stack mean.io

这是我的路线档案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

     

周六,2016年2月13日04:00:52 GMT express不推荐使用res.sendfile:在packages / custom / xx / server / routes / xx.js中使用res.sendFile:32:13   错误:ENOENT:没有这样的文件或目录,stat'/xx /assets/data/demo.png'       在错误(本机)

但我可以通过链接访问此文件:http://localhost:3000/xx/assets/data/demo.png

我正在使用MAC OS X EI Captian 10.11.2 我的MEAN.IO版本是0.5.5

1 个答案:

答案 0 :(得分:0)

我找到了一种没有res.sendFile()下载文件的方法,你可以使用fs.createReadStream(文件)或res.download(文件),两者都可以解决这个问题。

fs.createReadStream(文件):

app.route('/api/xx/download')
  .get(function (req, res) {
    var file = __dirname + '/../../public/assets/data/demo.png';
    res.download(file);
  });

res.download(文件):

使用Express res.download使生活更轻松

state B