Я делаю эксперимент, где у меня есть 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),Кто-нибудь может мне помочь?