/**
* 获取数据流
*/
import React from 'react';
import { Button } from 'antd';
import 'antd/dist/antd.css';
import request from 'umi-request';
export default () => {
function download() {
request('/get-data-stream', {
method: 'POST',
// 必须加responseType: 'blob',
responseType: 'blob',
}).then(res => {
const blob = new Blob([res]); //注意拿到的是数据流!!
const objectURL = URL.createObjectURL(blob);
let btn = document.createElement('a');
btn.download = '文件.docx'; //文件类型
btn.href = objectURL;
btn.click();
URL.revokeObjectURL(objectURL);
btn = null;
});
}
return (
<>
<Button type="primary" onClick={download}>
下载文件
</Button>
</>
);
};
或者直接地址下载,这个一般是由后端返回的
window.open('https:123//123123.........')
request.interceptors.request.use(async (url, options) => {
if (
options.method === 'post' ||
options.method === 'put' ||
options.method === 'delete' ||
options.method === 'get'
) {
const headers = {
'Content-Type': 'application/json',
Accept: 'application/json',
token:localStorage.getItem("token")
};
return {
url,
options: { ...options, headers },
};
}
});