a标签下载oss文件,download属性修改文件名称无效

a标签下载指定oss地址的文件。下载文件名称下载下来时是oss文件的路径,而不是我设定的文件名称。a标签有设置download属性。但不起作用
image.png
` / 下载模板事件 /
createTagForDownload = (fileName) => {

const body = document.querySelector('body')
const a = document.createElement('a')
a.setAttribute('href',downFileHref)
a.setAttribute('download',fileName)
a.style.display = 'none'
body.appendChild(a)
a.click()
body.removeChild(a)
window.URL.revokeObjectURL(downFileHref);

}`image.png

阅读 13.5k
3 个回答

同源吗?或者说你文件跨域吗?download属性只能是同源URL

如果a标签的href是指向的一个接口,通过接口下载文件的话,download属性即使设置了值,也不能更改下载到本地的文件的名字;同样,下载 OSS 上的文件,也不能通过设置download属性来改变下载到本地文件的名字。所以,如果使用a标签下载文件并且想修改下载到本地的文件名时,需要服务端配合修改 HTTP 的协议头Content-Disposition
摘录自:https://github.com/NinjiaHub/Frontend-Tricks/blob/master/documents/CHAOS/download-file.md
最后的解决方案是到oss里面设置Content-Disposition属性

看了下,我觉得你这种跨域下载,要把下载功能挪到后端进行处理,前端只做接口请求,会好一点

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题