使用文件流下载文件,并且修改文件的名字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用文件流下载文件,并且修改文件的名字相关的知识,希望对你有一定的参考价值。

最近在搞一个项目,里面有一个文件下载的内容,但是万恶的产品提了一个要自定义修改文件名的需求,一开始后台不想改,让前端修改(这简直是不可理喻,最后还是后台改了),不过经过努力,我还是找到了方法去解决。

这里使用的是文件流的方式,就是先把文件从服务器下载下来,前端再通过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)
            }))

这种方式就能解决前端修改文件名的需求,但是有个缺陷,就是一定要等文件内容全部下载下来了才能处理文件,这就是为什么我一直觉得应该是后台去完成这个需求的原因

以上是关于使用文件流下载文件,并且修改文件的名字的主要内容,如果未能解决你的问题,请参考以下文章

如何从 WCF 服务流下载文件?

Java实现文件流下载文件,浏览器无反应,后台无错误!如何解决?

Kotlin 协程Flow 异步流 ② ( 使用 Flow 异步流持续获取不同返回值 | Flow 异步流获取返回值方式与其它方式对比 | 在 Android 中使用 Flow 异步流下载文件 )

Kotlin 协程Flow 异步流 ② ( 使用 Flow 异步流持续获取不同返回值 | Flow 异步流获取返回值方式与其它方式对比 | 在 Android 中使用 Flow 异步流下载文件 )

在一个活动中加载单个片段两次,从本地json文件中加载2个问题

如何使用 webview 组件在 App 中下载文件?