欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

axios 文件流下载

程序员文章站 2022-08-15 19:07:28
commonDownload(parameter) { //公共的下载方法 return new Promise((resolve, reject) => { axios({ url:parameter.defaultUrl+'/Common/FileDownloadPost', method: 'post', responseType......

 

commonDownload(parameter) {  
        //公共的下载方法
        return new Promise((resolve, reject) => {
               axios({
                url:parameter.defaultUrl+'/Common/FileDownloadPost',
                method: 'post',
                responseType:'arraybuffer',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','token':getToken()},
                data:qs.stringify({
                    resourType:parameter.resourType,
                    resourceId:parameter.resourceId
                }),
            }).then(response=>{
                var filename = response.headers//下载后文件名
                filename = filename["content-disposition"]
                filename = decodeURI(filename.split(";")[1].split("filename=")[1]);

                var blob = new Blob([response.data],{type:response.headers['content-type']})
                var downloadElement = document.createElement('a');
                var href = URL.createObjectURL(blob); //创建下载的链接
                downloadElement.href = href;
                downloadElement.download = filename
                document.body.appendChild(downloadElement);
                downloadElement.click(); //点击下载
                document.body.removeChild(downloadElement); //下载完成移除元素
                URL.revokeObjectURL(href); //释放掉blob对象 
                resolve();
            }).catch(err=>{
                  reject(err)      
            })
        })
      }

后端把文件名放在了响应头部,content-disposition里面,

axios 文件流下载

response.setHeader("Access-Control-Expose-Headers","Content-Disposition");

axios 文件流下载

axios 文件流下载

这里有一点要注意 ,我因为这个问题  耽误了好长时间

axios 文件流下载

这里这个responseType   不是写在headers里面的,我之前一直写在headers里面 ,所以下载下来的文件一直不能用

本文地址:https://blog.csdn.net/xiaomanonyo/article/details/107557307