博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将零散文件使用ICSharpCode.SharpZipLib压缩打包后一次性下载
阅读量:7198 次
发布时间:2019-06-29

本文共 1102 字,大约阅读时间需要 3 分钟。

public static Stream CreateZip(List
listPath, int level = 5){ MemoryStream mstream = new MemoryStream(); using (ZipOutputStream zipstream = new ZipOutputStream(mstream)) { zipstream.SetLevel(level); Crc32 crc = new Crc32(); foreach (var path in listPath) { FileStream fs = File.Open(path, FileMode.Open); //重置流的位置 fs.Position = 0L; byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); //ZIP文件条目 ZipEntry entry = new ZipEntry(Path.GetFileName(path)); entry.DateTime = DateTime.Now; entry.Size = fs.Length; fs.Close(); crc.Reset(); crc.Update(buffer); //冗余校验码 entry.Crc = crc.Value; zipstream.PutNextEntry(entry); zipstream.Write(buffer, 0, buffer.Length); } //ZipOutputStream关闭后不关闭mstream zipstream.IsStreamOwner = false; } //重置流的位置 mstream.Position = 0L; return mstream;}

使用流读取并压缩文件。

zipstream.IsStreamOwner = false;
必须设置

在MVC中使用FileStreamResult File(Stream fileStream, string contentType, string fileDownloadName)方法可直接下载。

contentType可使用"application/x-zip-compressed"表示zip文件类型。

转载于:https://www.cnblogs.com/letnet/p/8525105.html

你可能感兴趣的文章
什么是BMC商业模式?
查看>>
不同浏览器中单选框和文字对齐的兼容
查看>>
Python 浮点数在列表中排序的问题
查看>>
一个失业三年后,又重新找回自信的小伙靠的是什么?
查看>>
JFinal学习-Excel导出
查看>>
linuxbridge 小贴士
查看>>
红旗inWise操作系统V8.0发布了!!!
查看>>
tiles2
查看>>
vi 合并多个文件
查看>>
切换npm源
查看>>
细数JDK里的设计模式
查看>>
Oracle中增加Split函数
查看>>
nagios 报警频率控制
查看>>
scrapy 应用
查看>>
Redis 部署策略
查看>>
2011-04-18 python 文件copy 之道 大全 (转)
查看>>
Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)...
查看>>
crate安装使用
查看>>
布隆过滤器
查看>>
cocos2dx的对象的内存释放
查看>>