.net core 极简方式实现ZIP文件压缩,支持文件流压缩,无需第三方组件
之前写项目经常用第三方组件实现下载,例如 SharpZipLib、DotNetZip,当然这些组件依旧很强大,但是对于日常项目中应用,.net core 提供了非常简洁的实现方式。
下面用几行极简的代码,实现ZIP打包下载文件。代码在.net core 3.1验证通过,更高版本肯定兼容,低版本没有尝试。
public FileResult Download()
{
var ms = new MemoryStream();
var zip = new ZipArchive(ms, ZipArchiveMode.Create);
var entry = zip.CreateEntry("Readme.txt"); // 压缩包内文件名
using var entryStream = entry.Open();
using var fs = new FileStream(@"C:\123.txt", FileMode.Open); // 要压缩的文件路径,也可用内存流代替
fs.CopyTo(entryStream);
entryStream.Close();
ms.Seek(0, SeekOrigin.Begin);
return new FileStreamResult(ms, "application/zip");
}
评论