アリ・*_*ディム 0 javascript laravel axios
我的后端代码如下,当我使用Laravel 的blade测试它时,它运行良好。但我无法在 React 前端中使用 Axios 执行相同的操作(请参阅下面的前端代码)。
return (new NewsExport())->download($filename);
Run Code Online (Sandbox Code Playgroud)
我以某种方式从另一个站点找到了一些解决方案:他们更改了后端代码,他们使用该Storage方法返回链接而不是文件。但我不想使用Storage,我想防止过度存储文件(以防前端用户快速单击下载按钮)。
我的问题是如何在前端axios中下载后端返回的文件?
我的前端代码(下面的代码成功下载了一个excel文件,但我认为该文件已损坏,因为当我使用Microsoft Excel测试它时无法打开它)
let response = await newsApi.exportNewsList(payload).then(response => {
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'exc.xlsx'); //or any other extension
document.body.appendChild(link);
link.click();
});
Run Code Online (Sandbox Code Playgroud)
这是response.data我登录时的截图:
我认为您忘记在 api 选项中指定您的responseTypeas blob 。
const options = {
method: 'POST',
responseType: 'blob', <=== you need this one
data: formData,
url: '/yourApi',
};
return API.request(options);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2632 次 |
| 最近记录: |