在使用文件下载的时候,很多情况都会需要下载文件的功能,单个文件的下载当然很简单,若是多个文件的下载就稍微有一点复杂,若是微服务架构,需要下载文件或者压缩打包文件,那就更加复杂了。
研究了一天,终于实现了功能。这会儿终于得空,记录一下。以便日后参考
打包下载主要出现两种情况
1:本地文件打包下载,一台服务器,很简单,不做过多的记录说明
2:微服务/其他文件服务器,打包下载文件流并压缩
使用 ZipFile压缩 类,必须在项目中引用 System.IO.Compression.FileSystem
程序集。
2的实现思路:
1:远程获取到文件流
2:本地创建需要保存的文件目录以及压缩包名
3:复制文件流到需要保存的文件目录下
4:使用ZipFile压缩目录中的所有文件,保存为一个压缩包
5:删除之前创建的文件目录以及子目录(防止过多下载,造成文件堆积过多)
6:返回前端压缩包的地址,通过window.open(压缩包的地址)下载
以下为核心代码:
[HttpPost]
public async Task<IActionResult> OnPostDown([FromBody]JObject v