翼度科技»论坛 编程开发 JavaScript 查看内容

移动端a标签下载文件重命名(download)不生效解决办法

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
项目场景:
  1. 移动端使用 [code]a
复制代码
标签下载文件[/code]
问题描述
  1. 下载的文件使用 [code]download
复制代码
重命名不生效[/code]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(new Date()).format('YYYY-MM-DD HH:mm:ss')}`) // 设置下载属性 以及文件名
  5.             document.body.appendChild(link) // a标签插至页面中
  6.             link.click() // 强制触发a标签事件
  7.             document.body.removeChild(link)
复制代码


原因分析:
  1. 跨域问题:如果下载文件所在的服务器与当前页面不在同一域名下,download属性可能无法正常工作。这是因为跨域访问限制了文件下载。
复制代码
解决方案:
  1. 使用[code]fetch
复制代码
或者
  1. axios
复制代码
获取数据流,转成
  1. blob
复制代码
之后就是同源的文件了,此时可以使用
  1. a
复制代码
标签正常下载了,注意需要添加请求头
  1. 'Content-Type': 'application/json;charset=UTF-8'
复制代码
[/code]
  1. fetch('http://192.168.103.1:8080/factory/v1/group1/M00/00/30/wKhnWWa6xf2AEеKVAAAAFQHKOQM949.txt', {
  2.                 method: 'get',
  3.                 heanders: {
  4.                     'Content-Type': 'application/json;charset=UTF-8'
  5.                 }
  6.             })
  7.                 .then(res => res.blob())
  8.                 .then(blob => {
  9.                     const link = document.createElement('a')
  10.                     link.style.display = 'none'
  11.                     link.download = `${dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')}`// 设置下载属性 以及文件名
  12.                     link.href = URL.createObjectURL(blob)

  13.                     document.body.appendChild(link)
  14.                     link.click()
  15.                     // 释放的 URL 对象以及移除 a 标签
  16.                     URL.revokeObjectURL(link.href)
  17.                     document.body.removeChild(link)
  18.                 })
复制代码


总结

到此这篇关于移动端a标签下载文件重命名(download)不生效解决办法的文章就介绍到这了,更多相关a标签下载文件重命名不生效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/javascript/328963tkd.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

x

举报 回复 使用道具