前端下载文件流(可暂停、取消、查看进度)

打印 上一主题 下一主题

主题 541|帖子 541|积分 1623

  1.   <el-button type="primary" icon="Download" plain @click="handleDownload('batch')">下载</el-button>
复制代码
1、a标签下载(没有进度条,接口走完前端才有反应,下载大文件时用户体验不好,实用下载小文件)
  1. // 下载
  2. const handleDownload = async row => {
  3.     if (selectedData.value && selectedData.value.length != 0) {
  4.       selectedData.value.forEach(item=>{
  5.         downloadFileAuthentication(item.propertyId).then(res => {
  6.           downloadFileHref(item.propertyId).then(res => {
  7.             const blob = new Blob([res], { type: 'application/zip' })
  8.             const link = document.createElement('a')//创建a标签
  9.             link.download = item.propertyName//a标签添加属性
  10.             link.style.display = 'none'
  11.             link.href = URL.createObjectURL(blob)
  12.             document.body.appendChild(link)
  13.             link.click()//执行下载
  14.             URL.revokeObjectURL(link.href) //释放url
  15.             document.body.removeChild(link)//释放标签
  16.           })
  17.         })
  18.       })
  19.       
  20.     } else {
  21.       ElMessage.warning('请先选择操作数据');
  22.     }
  23. }
复制代码
2、 window.location.href下载(有进度条,可取消、暂停。缺点:一次只能下载一条,不支持批量下载)(这里后端get哀求方式传参)
  1. const handleDownload = async row => {
  2.   const url = `/ca/download/downloadFile?propertyId=${row.propertyId}`;
  3.   downloadFileAuthentication(row.propertyId).then(res => {
  4.     if (res.code == 200) {
  5.       window.location.href = ` ${downLoadUrl + url}&token=${getToken()}`
  6.     }
  7.   })
  8. };
复制代码
3、iframe下载(有进度条,可取消、暂停,支持同时下载多个)
  1. const handleDownload = async row => {
  2.     if (selectedData.value && selectedData.value.length != 0) {
  3.       selectedData.value.forEach(item=>{
  4.         downloadFileAuthentication(item.propertyId).then(res => {
  5.           downloadFileHref(item.propertyId).then(res => {
  6.                        var url = `/ca/download/downloadFile?propertyId=${item.propertyId}`;  // 文件地址
  7.                   var iframe = document.createElement('iframe')
  8.                   iframe.src = ` ${downLoadUrl + url}&token=${getToken()}`
  9.                   iframe.style.display = 'none'
  10.                   iframe.onload = function () {
  11.                     document.body.removeAttribute(iframe)
  12.                   }
  13.                   document.body.appendChild(iframe)
  14.           })
  15.         })
  16.       })
  17.       
  18.     } else {
  19.       ElMessage.warning('请先选择操作数据');
  20.     }
  21. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小秦哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表