前端直接下载文件
// 处理blob二进制流进行文件下载
export function download(data, name, type) {
function isBlobOrArrayBuffer(obj) {
return obj instanceof Blob || obj instanceof ArrayBuffer
}
const link = document.createElement('a')
let blob = type ? new Blob([isBlobOrArrayBuffer(data)?data:data?.data], {type}) : new Blob([isBlobOrArrayBuffer(data)?data:data?.data])
// link.style.display = 'none'
link.href = URL.createObjectURL(blob)
//下载文件名
link.download = name
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
// download(blob, '获奖信息数据.xlsx')
用的时候直接引入
import { download } from "@/utils/tools.js";
获取blob直接下载
// 获取blob二进制流
const blob = await fetch(url).then(res => res.blob());
download(blob, '文件.pdf');
接口返回文件流的处理方式
接收后台返回的文件流下载文件
// 导出Excel
export function exportExcel(params) {
return request({
url: baseUrl + `export-excel`,
method: "get",
responseType: "blob",
params,
});
}
download(res, "excel.xlsx");