el-upload 上传文件之后 实现文件流下载

本文介绍了如何在Vue项目中利用el-upload组件的on-preview属性实现文件下载功能。通过绑定on-preview事件,获取文件信息并调用下载接口,使用Blob对象创建文件流,然后利用a标签模拟点击下载。当遇到文件格式问题时,解决方案是在axios请求中设置responseType为'blob',确保文件类型正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想要下载文件列表的文件 需要在el-upload 上绑定 on-preview 属性

 <el-upload :action='upUrl' :data='upData' :headers="upheaders" :on-preview='dowloadFile' :show-file-list="true" :on-success="handleAvatarSuccess" :before-remove="beforeRemove" :file-list="fileList">
                <el-button size="small" type="primary">点击上传</el-button>
</el-upload>

通过on-preview 的参数获取当前点击文件的参数 ,并调用接口 返回文件流 通过Blob对象 实现文件流下载文件

dowloadFile(file) {

      downFile({
        filePath:file.url
        fileName:file.name
      }).then(res => {
        let blob = new Blob([res]);
        // 获取heads中的filename文件名
        let downloadElement = document.createElement('a');
        // 创建下载的链接
        let href = window.URL.createObjectURL(blob);
        downloadElement.href = href;
        // 下载后文件名
        downloadElement.download = fileName;
        document.body.appendChild(downloadElement);
        // 点击下载
        downloadElement.click();
        // 下载完成移除元素
        document.body.removeChild(downloadElement);
        // 释放掉blob对象
        window.URL.revokeObjectURL(href);
      })



    },

这样下载的文件会有问题,会造成文件的格式不对,是因为下载的时候没有指定下载的文件类型

想要下载所有类型的文件,直接在请求的时候(axios)加上 responseType: 'blob' 就可以了

export function downFile(data) {
  return request({
    url: '/xxxx/xxx ',
    method: 'post',
    data,
    responseType: 'blob'
  })
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值