欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > a标签下载文件重命名(download)不生效

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

2024/10/24 13:18:04 来源:https://blog.csdn.net/Julia_0502/article/details/141163724  浏览:    关键词:a标签下载文件重命名(download)不生效

项目场景:

移动端使用 a 标签下载文件


问题描述

下载的文件使用 download 重命名不生效

APP 中接收数据代码:

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

在这里插入图片描述


原因分析:

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


解决方案:

使用fetch或者axios获取数据流,转成blob 之后就是同源的文件了,此时可以使用a标签正常下载了,注意需要添加请求头'Content-Type': 'application/json;charset=UTF-8'

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')link.style.display = 'none'link.download = `${dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')}`// 设置下载属性 以及文件名link.href = URL.createObjectURL(blob)document.body.appendChild(link)link.click()// 释放的 URL 对象以及移除 a 标签URL.revokeObjectURL(link.href)document.body.removeChild(link)})

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com