最近在搞一个项目,里面有一个文件下载的内容,但是希望前端实现,经过努力,我还是找到了方法去解决。
这里使用的是文件流的方式,就是先把文件从服务器下载下来,前端再通过blob去修改文件名。
代码如下:
fetch('/api/fs/download2/internal/' + item.att[0].url).then(res => res.blob().then(blob => {
let a = document.createElement('a'),
url = window.URL.createObjectURL(blob),
filename = item.title
a.href = url
a.download = filename
a.click()
window.URL.revokeObjectURL(url)
}))
这种方式就能解决前端修改文件名的需求,但是有个缺陷,就是一定要等文件内容全部下载下来了才能处理文件,这就是为什么我一直觉得应该是后台去完成这个需求的原因
浙公网安备 33010602011771号