Как загрузить файл stati c (например, .docx) с сервера, используя response. js в качестве внешнего интерфейса и express. js в качестве внутреннего? - PullRequest
0 голосов
/ 20 марта 2020

Сначала я пытаюсь это сделать на своем локальном хосте. Сервер express. js работает на порте 5000, а клиент работает на порте 3000. Каков наилучший подход для обработки этого и что я должен написать на стороне реагирующего клиента? Я попытался привести несколько примеров, но ничего не вышло. Заранее благодарим за ваш ответ.

Файл, который я хочу загрузить, находится в том же каталоге, что и сервер. js

server. js // expres. js

const path = require('path');
const express = require('express');
const app = express();

app.get('download', (req, res) => {
    console.log("descarga")
    const docPath = path.join(__dirname, 'example.docx');

    res.download(docPath, 'example.docx', function(err){
      if (err) {
        // if the file download fails, we throw an error
        throw err;
      }
      console.log('Someone just downloaded our file!');
    });
  })

app.listen(5000, () => console.log('Server Started...'));

скачать файл. js // реагировать

const downloadFile = () => {

    const onSubmitDownload = () => {
        ........
    }

    return (
         <form onSubmit = {onSubmitDownload} >
           <input type="submit" value="Download" className="btn btn-primary btn-block mt-4"/>
         </form>
    )

}

1 Ответ

0 голосов
/ 20 марта 2020

Если мы собираемся использовать концепцию подачи файлов c, нет необходимости получать запрос go width.

Просто используйте Url = localhost:5000/download/example.docx;

    app.use('/download', express.static(__dirname'));

, если вы хотите запросить файл без имени файла, вы можете написать функцию обратного вызова внутри express stati c

В приложении React

Используя ссылку, нажмите

downloadEmployeeData = () => {
        fetch('http://localhost:5000/download/example.docx')
            .then(response => {
                response.blob().then(blob => {
                    let url = window.URL.createObjectURL(blob);
                    let a = document.createElement('a');
                    a.href = url;
                    a.download = 'employees.json';
                    a.click();
                });
                //window.location.href = response.url;
        });
    }

или automati c download

window.open('http://localhost:5000/download/example.docx', '_blank');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...