Laravel - Express - React Comunication - PullRequest
1 голос
/ 11 июня 2019

Я делаю эксперимент, где у меня есть 3 сервера:

  • Использование Laravel (бэкэнд с Laravel-Excel)
  • Использование ExpressJS (с axios)
  • Использование React JS (FrontEnd)

Моя цель - использовать библиотеку laravel-excel, экспортировать таблицы базы данных непосредственно в файл Excel и загрузить ее.

На сервере laravelЯ использую строку кода:

Excel::download(new UsersExport, 'users.xlsx');

Эта строка кода работает, но у меня возникают проблемы при отправке запроса на экспортированный файл на сервер реагирования js.

ВExpressJS, который я пробовал:

app.post('/GetExportExcel', function (req, res) {

    axios.request({
        method: 'POST',
        url: 'http://localhost:8000/ExportandDownloadFile',
        headers: {
            "Access-Control-Allow-Origin" : "http://localhost:3000/",
            'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
        },
        //responseType: 'stream'
        responseType: 'blob', // important
    })
    .then(response =>{

        response.data.pipe(res);
    })
    .catch(error => {
        if (error.response) {
            res.status(error.response.status).json(error.response.data);
        } else if (error.request) { 
            res.status(502).end();
        } else { 
            res.status(500).end();
        }
    });
});

и в ответном JS:

static ExportExcelFile()
{
    const headers = new Headers();
    headers.append('Access-Control-Allow-Origin', '*');  

    return fetch('http://localhost:4500/GetExportExcel',{
        timeout: 2000,
        method: 'POST',
        mode: 'cors',
        headers,
    }).then(response => {

        response.blob().then(blob => {
            FileSaver.saveAs(blob, 'users.xlsx');
        });
    });
}

И до сих пор содержимое экспортированного файла не дошло до внешнего интерфейса (сервераactJS),Кто-нибудь может мне помочь?

...