<a href={systemPdf} download="application/pptx" target="_blank">下载</a>
downloadHandler = () => {
const url = '../action?id=3'
window.location.href = url
}
<span onClick={this.downloadHandler}>下载</span>
import React from 'react';
const Ajax = require('axios');
//server---start
export function request(url, options, isDemo = true) {
//可删除----开始 只为演示用
if (isDemo) {
let response = {
data: {},
fileName: 'demo.xlsx',
success: true,
headers: { 'content-type': 'application/octet-stream', 'content-disposition': 'la=1;fileName=demo.xlsx' },
responseType: options.responseType
}
if (response.headers['content-type'] === 'application/octet-stream') {
let fileName = decodeURI(response.headers['content-disposition'].split(';')[1].split('=')[1])
return { data: response.data, success: true, fileName, }
}
}
//可删除----结束
let contentType = null;
let fileName = null;
Ajax.interceptors.response.use(response => {
if(response.headers['content-type'] === 'application/octet-stream'){
contentType = true;
fileName = docodeURL(response.headers['content-disposition'].split(';')[1].split('=')[1]);
return response
}
},error => {
console.log('error', error)
})
return Ajax({
method: options.method || "POST", //请求方式
url: url, //下载地址
data: options.data || {}, //请求内容
responseType: options.responseType || 'arraybuffer'
}).then((res) => {
if (contentType) {
return { data: res.data, success: true, fileName }
}
if (res.success) {
return { data: res.data, success: true, }
}
})
};
export async function downloadQuery(data, responseType = 'arraybuffer') {
return request("/erp/api/query/data", { method: "POST", data, responseType });
}
//server---end
class Demo extends React.Component {
//modal---start
dowmloadQuery = async (data) => {
const res = await downloadQuery(data);
//type:'application/.....'这里是xlsx的类型
let blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, res.fileName)
} else {
let downloadElement = document.createElement('a');
let href = window.URL.createObjectURL(blob); // 创建下载的链接
downloadElement.href = href;
downloadElement.download = res.fileName; // 下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); // 点击下载
document.body.removeChild(downloadElement); // 下载完成移除元素
window.URL.revokeObjectURL(href); // 释放掉blob对象
}
};
//modal---end
//view---start
render = () => {
return (
<div>
< button onClick={this.dowmloadQuery}>点击并下载</button>
</div>);
}
//view---end
}
export default Demo;