我正在使用 axios 进行基本的 http 请求,例如 GET 和 POST,效果很好。现在我也需要能够下载 Excel 文件。使用 axios 可以实现吗?如果可以,有人有示例代码吗?
我正在使用 axios 进行基本的 http 请求,例如 GET 和 POST,效果很好。现在我也需要能够下载 Excel 文件。使用 axios 可以实现这一点吗?如果可以,有人有示例代码吗?如果没有,我还可以在 React 应用程序中使用什么来做同样的事情?
当响应带有可下载文件时,响应标头将类似于:
{
"Content-Disposition": "attachment;filename=report.xls"
"Content-Type": "application/octet-stream" // or "application/vnd.ms-excel"
}
您可以做的是创建一个单独的组件,它将包含一个隐藏的 iframe
.
import * as React from 'react';
var MyIframe = React.createClass({
render: function() {
return (
<div style={{display: 'none'}}>
<iframe src={this.props.iframeSrc} />
</div>
);
}
});
现在,您可以将可下载文件的 URL 作为 prop 传递给此组件。因此,当此组件收到 prop 时,它将重新渲染并下载文件。
编辑: 您也可以使用 js-file-download 模块。 链接至 Github repo
const FileDownload = require('js-file-download');
Axios({
url: 'http://localhost/downloadFile',
method: 'GET',
responseType: 'blob', // Important
}).then((response) => {
FileDownload(response.data, 'report.csv');
});