首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Express res.download()

Express res.download()
EN

Stack Overflow用户
提问于 2018-09-19 01:16:00
回答 2查看 15.2K关注 0票数 3

我不知道为什么会这样,但这真的很烦人。我期望根据express docs下载该文件。我有下面的代码:

代码语言:javascript
复制
  //in react (App.js)
  download = () => {
    const { images, target } = this.state;
    const filename = images.find(img => img.id === target).filename;
    fetch('http://localhost:3001/download', {
      method: 'post',
      headers: {'Content-Type': 'application/json'},
      body: JSON.stringify({filename})
    })
  }
  //in express (server.js)
  app.post('/download', (req, res) => {
    var file = '../public/images/' + req.body.filename;
    res.download(file, req.body.filename);
  });

文件夹结构:

代码语言:javascript
复制
  -server
    |-server.js
  -public
    |-images
      |-a.jpg
      |-b.jpg
  -src
    |-App.js

什么都没有发生,错误没有显示。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-19 01:22:44

我认为您遇到的问题是您正在使用HTTP POST而不是HTTP GET

票数 3
EN

Stack Overflow用户

发布于 2018-09-19 02:02:15

这是一个挑战,但这对我来说很管用。

代码语言:javascript
复制
let express = require('express'),
path = require('path'),
port = process.env.PORT || process.argv[2] || 8080,
app = express();

app.get('/', (req, res)=>{

res.send('<a href="/download">Download</a>');

});

app.get('/download', (req, res)=>{

res.download(path.join(__dirname, 'views/files.pug'), (err)=>{

    console.log(err);

});
console.log('Your file has been downloaded!')
});

app.listen(port, ()=>{

console.log('res is up on port: ' + port);

});
``

只需将文件名替换为您的文件名即可。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52391627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档