要了解文件操作,需要先了解JS的二进制数据流内容,推荐下面这篇大佬文章
JS的二进制家族:Blob、ArrayBuffer和Buffer
导出文件
这里以导出excel文件为例,其他相同,改下对应参数即可
接口请求数据
请求头中responseType = “arraybuffer” 指定响应的数据类型
导出文件
function fileDownload(data, fileName) {//接口返回的数据流及文件名称
let blob = new Blob([data], {
//导出的文件类型
type: "application/octet-stream"
})
let filename = fileName || "filename.xlsx";
//IE兼容处理
if (typeof window.navigator.msSaveBlob !== "undefined") {
window.navigator.msSaveBlob(blob, filename);
} else {
var blobURL = window.URL.createObjectURL(blob);
var tempLink = document.createElement("a");
tempLink.style.display = "none";
tempLink.href = blobURL;
tempLink.setAttribute("download", filename);
if (typeof tempLink.download === "undefined") {
tempLink.setAttribute("target", "_blank");
}
document.body.appendChild(tempLink);
tempLink.click();
document.body.removeChild(tempLink);
window.URL.revokeObjectURL(blobURL);
}
}
使用pdf.js、FileSaver.js将PDF转成图片,且支持批量下载
引入pdf.js,iframe嵌入实现预览、打印功能
前端下载数据流的三种方式
文件上传
大文件上传和断点续传
图片上传(调用微信接口)
图片上传,并填入EXIF信息
利用localResizeIMG将图片压缩转为base64上传