后端返回的base64格式的数据,前端转成blob进行下载.xlsx文件

448 阅读1分钟
export const downloadFile = async (url, params = {}) => {
    //默认值
    if (!url) url = '/file/download'
    try {
        let res = await http.get(url, { params });
        let fileData = res.data.content;
        let fileName = res.data.fileName
        // console.log(JSON.stringify(fileData));
        // console.log(JSON.stringify(fileName));
        //文件不存在
        if (!fileData || !fileName)
            return false;
        fileName = window.decodeURI(fileName);
        // 返回的Base64编码,所以要将Base64转成Blob
        let theBlob = baseToBlob(fileData, fileName);
        //IE
        if (window.navigator.msSaveBlob) {
            window.navigator.msSaveOrOpenBlob(theBlob, fileName);
            return true;
        }
        //非ie
        let link = document.createElement("a");
        link.href = URL.createObjectURL(theBlob);
        link.target = "_blank";
        link.download = fileName;
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
        return true;
    } catch (error) {
        return  false
    }
}