如何使用Express从服务器下载文件

3

我正在使用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个回答

3

这会有帮助吗?这将告诉浏览器将文件下载为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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接