前端文件下载处理
以饿了吗Upload 上传组件为例
1.在上传完文件之后,点击下载图标
就会触发:on-download事件,然后拿到文件的fileToken发请求获取后端返回的文件流(我这里是blob)代码案例如下:
最后再调用下载方法即可下载文件。下载方法代码如下
复制代码 。
//常用文本
export const download = (file, blobs) => {
let blob = new File([blobs], { type: "application/octet-stream" });
if ("download" in document.createElement("a")) {
const downloadElement = document.createElement("a");
let href = "";
if (window.URL) {
href = window.URL.createObjectURL(blob);
} else {
href = window.webkitURL.createObjectURL(blob);
}
downloadElement.href = href;
downloadElement.download = file.fileName || file.name;
document.body.appendChild(downloadElement);
downloadElement.click();
if (window.URL) {
window.URL.revokeObjectURL(href);
} else {
window.webkitURL.revokeObjectURL(href);
}
document.body.removeChild(downloadElement);
URL.revokeObjectURL(href); //释放 Blob
} else {
navigator.msSaveBlob(blob, file.fileName || file.name);
}
return;
};