Express res.download () - PullRequest
       8

Express res.download ()

0 голосов
/ 18 сентября 2018

Я не знаю, почему это происходит, но это действительно раздражает.Я ожидал, что файл будет загружен в соответствии с express docs .У меня есть следующий код:

  //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);
  });

Структура папок:

  -server
    |-server.js
  -public
    |-images
      |-a.jpg
      |-b.jpg
  -src
    |-App.js

Ничего не происходит, ошибки не отображаются.Есть идеи?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Это был вызов, но это сработало для меня.

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);

});
``

Просто замените имена файлов вашими.

0 голосов
/ 18 сентября 2018

Я думаю, проблема в том, что вы используете HTTP POST вместо HTTP GET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...