上一篇
📢 最新动态:微软在2025年8月发布了ASP.NET Core 7.0更新,新增了原生文件压缩API支持,让文件压缩操作更高效!🚀(信息来源:微软官方博客【2025-08-20】)
嘿,开发者朋友们!今天咱们来聊聊如何在ASP.NET中轻松实现文件压缩功能,无论是备份日志、打包下载还是优化存储,文件压缩都是必备技能!💡
环境要求
选择压缩库
System.IO.Compression
(推荐,无需第三方依赖) // 1. 引入命名空间 using System.IO.Compression; // 2. 创建压缩方法 public async Task CompressFiles(string[] sourcePaths, string outputZipPath) { using (var zipArchive = ZipFile.Open(outputZipPath, ZipArchiveMode.Create)) { foreach (var filePath in sourcePaths) { // 添加文件到压缩包(保留目录结构) zipArchive.CreateEntryFromFile(filePath, Path.GetFileName(filePath), CompressionLevel.Optimal); await Task.Delay(1); // 模拟异步操作 } } } // 3. 调用示例 await CompressFiles(new[] { "logs/2025.txt", "images/photo.jpg" }, "backup.zip");
压缩整个文件夹
public void CompressDirectory(string sourceDir, string zipPath) { ZipFile.CreateFromDirectory(sourceDir, zipPath, CompressionLevel.Fastest, true); }
设置密码保护(需第三方库)
// 使用SharpZipLib示例 using (var zipOutput = new ZipOutputStream(File.Create("secure.zip"))) { zipOutput.Password = "YourPassword!"; // 添加文件逻辑... }
分卷压缩
var options = new ZipArchiveOptions { StoreInMemory = true }; var archive = ZipArchive.Create(new MemoryStream(), options); // 分卷逻辑需自定义分割流...
CompressionLevel.Fastest
平衡速度与体积 ZipArchive.Dispose()
方法必须调用,否则资源泄漏! 场景1:用户下载压缩包
public async Task<IActionResult> DownloadZip() { var zipBytes = await CompressToMemory(new[] { "file1.txt", "file2.txt" }); return File(zipBytes, "application/zip", "download.zip"); }
场景2:定时压缩日志
// 在定时任务中调用 var logger = new FileLogger(); await CompressFiles(Directory.GetFiles("App_Data/Logs"), $"Logs_{DateTime.Now:yyyyMMdd}.zip"); logger.Log("压缩完成!");
🎉 :ASP.NET Core 7.0+的原生压缩API已经足够强大,配合异步编程和内存流操作,轻松实现高效文件管理!赶紧试试看吧~有任何问题欢迎评论区交流!👇
本文由 业务大全 于2025-08-22发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://cloud.7tqx.com/wenda/692321.html
发表评论