如何从express服务器下载文件

时间:2017-06-14 02:04:35

标签: node.js express

我正在使用node.js和express。我想在服务器上创建一个文件,然后在命中终点时下载。 这是我目前的代码。

router.get('/download', (req, res) => {
 const fileController = new FileController();
  fileController.generateJSONFile()
  .then((file) => {
     fs.writeFile('fooFile.json', file, 'utf8');
  }).then((success) => {
    res.download('fooFile.json');
  })
  .catch((error) => {
    res.status(500).send();
 });
});

我还希望它能在下载完成后立即从服务器上删除该文件。

如果有更好的方法可以实现这一目标,我不需要使用res.download()。

1 个答案:

答案 0 :(得分:2)

这会有帮助吗?这应该告诉浏览器将文件下载为fooFile.json。这不需要保存临时文件。

router.get('/download', (req, res) => {
 const fileController = new FileController();
  fileController.generateJSONFile()
  .then((file) => {
     res.setHeader('Content-Type', 'application/octet-stream; charset=utf-8');
     res.setHeader('Content-Disposition', 'attachment; filename="fooFile.json"');
     res.send(file);
  })
  .catch((error) => {
    res.status(500).send();
 });
});

如果您只想发送json

res.setHeader('Content-Type', 'application/json; charset=utf-8');
res.send(file);