H5 之 文件流转base64下载

直接上代码,首先,请求时加一个 responseType 属性 本接口使用axios为例

export const gethpspfile = (data) => {
    return axios.request({
        url: URL_BASE + '/business/hpsp/hpysspcontroller/gethpspfile',
        method: 'POST',
        responseType: 'arraybuffer', // 这里加添
      //  responseType: 'blob',
        data
    });
};

在就是掉请求下载文件 这里使用 try catch 是因为返回的是一个文件流 axios给拦截了

   // 下载附件
   async download(item) {
         uni.showLoading({ title: '下载中' });
            try {
                let res = await gethpspfile({ RECORDID: item.RECORDID });
            } catch (error) {
                let type = '';
                // 下载的文件类型格式
                if (item.FILETYPE == 'doc') {
                    type = 'data:application/msword;base64,';
                } else if (item.FILETYPE == 'pdf') {
                    type = 'data:application/pdf;base64,';
                }
                //arrayBufferToBase64转换为Base64
                let url = type + uni.arrayBufferToBase64(error);
                // 创建a标签下载
                let link = document.createElement('a');
                link.style.display = 'none';
                link.href = url;
                link.setAttribute('download', '下载文件名称');
                document.body.appendChild(link);
                link.click();

                uni.hideLoading();
            }
     }

 base64对应的文件类型

txt

data:text/plain;base64,

doc data:application/msword;base64,
docx                                                      data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,
xls        data:application/vnd.ms-excel;base64,
xlsx     data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,
pdf     data:application/pdf;base64,
pptx   data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64,
ppt     data:application/vnd.ms-powerpoint;base64,
png        data:image/png;base64,
jpg       data:image/jpeg;base64,
gif       data:image/gif;base64,
svg data:image/svg+xml;base64,
ico       data:image/x-icon;base64,
bmp     data:image/bmp;base64,

猜你喜欢

转载自blog.csdn.net/qq_45689385/article/details/125937636