经常做下载这个功能,索性写个笔记记录一下。
因为需要兼容iOS,所以将后端返回的url文件地址,转为文件流进行下载。
这个方法也可以处理不同源下载的问题。
抽取代码块:
const downloadFile = (url, downloadName) => {
const link = document.createElement('a');
fetch(url).then(res => res.blob()).then((blob) => {
let bl = new Blob([blob], {
type: "application/pdf;charset=UTF-8",
})
link.href = URL.createObjectURL(bl);
link.download = downloadName + '.pdf';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
});
};
调用:
downloadFile(fileUrl, fileName)