下载原理
在fetch中,先fetch文件,生成一个Blob
,然后建立一个a
标签,将连接连接到blob上,出发点击,就实现了下载。
实例
下面时ant-design-pro中download组件的实现。
export default class Download extends PureComponent {
static propTypes = {
action: string,
accept: string,
method: string,
params: object,
callback: func,
beforeDownload: func,
}
static defaultProps = {
action: '/sys/fileManage/downloadFile',
accept: '*/*',
method: 'GET',
params: {
},
callback: () => {
},
beforeDownload: async () => {
},
}
constructor(props) {
super(props)
this.state = {
loading: false,
}
}
downFile = (blob, fileName) => {
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName)
} else {
const link = document.createElement