0


a标签下载文件重命名(download)不生效

项目场景:

移动端使用

  1. a

标签下载文件


问题描述

下载的文件使用

  1. download

重命名不生效

APP 中接收数据代码:

  1. const link = document.createElement('a')// 创建a标签
  2. link.style.display ='none'// 使其隐藏
  3. link.href ='http://192.168.103.1:8080/factory/v1/group1/M00/00/30/wKhnWWa6xf2AEеKVAAAAFQHKOQM949.txt'// 赋予文件下载地址
  4. link.setAttribute('download',`${dayjs(newDate()).format('YYYY-MM-DD HH:mm:ss')}`)// 设置下载属性 以及文件名
  5. document.body.appendChild(link)// a标签插至页面中
  6. link.click()// 强制触发a标签事件
  7. document.body.removeChild(link)

在这里插入图片描述


原因分析:

跨域问题:如果下载文件所在的服务器与当前页面不在同一域名下,download属性可能无法正常工作。这是因为跨域访问限制了文件下载。


解决方案:

使用

  1. fetch

或者

  1. axios

获取数据流,转成

  1. blob

之后就是同源的文件了,此时可以使用

  1. a

标签正常下载了,注意需要添加请求头

  1. 'Content-Type': 'application/json;charset=UTF-8'
  1. fetch('http://192.168.103.1:8080/factory/v1/group1/M00/00/30/wKhnWWa6xf2AEеKVAAAAFQHKOQM949.txt',{method:'get',heanders:{'Content-Type':'application/json;charset=UTF-8'}}).then(res=> res.blob()).then(blob=>{const link = document.createElement('a')
  2. link.style.display ='none'
  3. link.download =`${dayjs(newDate()).format('YYYY-MM-DD HH:mm:ss')}`// 设置下载属性 以及文件名
  4. link.href =URL.createObjectURL(blob)
  5. document.body.appendChild(link)
  6. link.click()// 释放的 URL 对象以及移除 a 标签URL.revokeObjectURL(link.href)
  7. document.body.removeChild(link)})

在这里插入图片描述

标签: javascript html5 vue.js

本文转载自: https://blog.csdn.net/Julia_0502/article/details/141163724
版权归原作者 Julia_0502 所有, 如有侵权,请联系我们删除。

“a标签下载文件重命名(download)不生效”的评论:

还没有评论