在 C# 和 .NET 中提取存档文件

在 .NET 应用程序中以编程方式解包 ZIP 和其他存档格式。

在 .NET 中提取存档文件

Aspose.ZIP for .NET 是用于在 C# 应用程序中打开存档并解包其内容的托管库。API 可读取存档条目、提取全部或选定项目、保留目录结构,并将输出写入文件夹或流。处理过程保留在应用程序内部,因此服务器端工作流不依赖桌面软件或命令行工具。

常见用例包括文档导入、备份还原、部署打包、上传处理和自动化数据交换。同一 API 可用于 ASP.NET 服务、后台 worker、桌面应用程序、云作业和 CI/CD 工具。应用程序负责控制接受哪些格式和条目,以及输出保存到哪里。

什么是存档文件提取器?

存档文件提取器会打开包含一个或多个文件的容器,并还原其中保存的内容。该过程通常读取存档元数据、识别条目和目录、解压数据,并将结果写入已批准的位置。加密存档还需要该格式支持的有效凭据和设置。

存档提取的工作方式

典型 C# 工作流包括接收存档、确定格式、使用适合该格式的 API 类打开容器、在需要筛选时检查条目、在写入文件之前验证路径和资源限制、将已批准的内容提取到隔离目标,然后将输出传递给应用程序的下一阶段。

可用于提取的存档格式

该库可处理常见存档和压缩格式,包括 ZIP、7Z、RAR、TAR、GZIP、BZIP2、XZ、LZIP、Z、CPIO、CAB 和 WIM。请选择与实际容器匹配的处理程序,而不是只依赖文件扩展名。

常见文件提取工作流

解包完整存档。 当每个条目都需要且输入已通过验证时使用完整提取。

只读取选定条目。 在写入数据之前检查 Archive.Entries 并应用应用程序规则。

处理流。 基于流的输入适合 ASP.NET 上传、对象存储、数据库和消息驱动系统。

打开受保护内容。 通过相关格式的解密设置提供凭据,并且绝不要把密码写入日志。

将大型输入作为有边界的作业处理。 限制压缩大小、解压后大小、条目数量、处理时间和临时存储用量。

将 Aspose.ZIP 添加到 C# 项目

在面向 Windows、Linux 或 macOS 上受支持 .NET 环境的 C# 项目中安装 Aspose.ZIP NuGet 包 。然后引用所需命名空间,并选择与输入容器对应的类。

Package Manager Console

PM> Install-Package Aspose.Zip

C# 示例:解包 ZIP 文件

ZIP 提供了共享工作流的简洁示例。代码打开输入并将其内容写入目标目录。

将 ZIP 内容提取到目录

using Aspose.Zip;
using System.IO;

string archivePath = Path.GetFullPath("input.zip");
string outputDirectory = Path.GetFullPath("extracted");

Directory.CreateDirectory(outputDirectory);

using (var archive = new Archive(archivePath))
{
    archive.ExtractToDirectory(outputDirectory);
}

生产环境中的安全存档提取

请将来自用户或外部系统的存档视为不受信任的输入。写入条目前,应根据已批准的目标解析其输出路径,并拒绝绝对路径、父目录遍历以及任何位于该目录之外的结果。

为压缩大小、总解压大小、单个条目大小、条目数量、执行时间和并发设置限制。使用权限受限且按作业隔离的临时文件夹,只提升已验证的输出,并在成功和失败后都进行清理。

在浏览器中试用提取

免费的浏览器提取应用 可在不安装软件的情况下测试示例输入。在线工具适合交互式任务;.NET 库面向可重复服务、后台处理、存储流水线和企业应用。

各类存档的提取指南

实现细节因容器而异。从概览进入实现时,请使用实际输入类型的指南,避免将 ZIP 假设应用到 7Z、RAR、TAR、CAB 或行为不同的流压缩格式。

按文件格式划分的存档提取指南

浏览常存储在 ZIP 存档中的文件和资产的 C# 提取页面。

存档提取资源

存档提取常见问题

1. 如何在 C# 中提取存档文件?

安装 Aspose.ZIP,使用与格式匹配的类打开输入,并将完整容器或选定条目解包到已批准的目录或流。

2. 如何从 ZIP 存档提取文件?

为 ZIP 输入创建 Archive 实例并调用 ExtractToDirectory 解包全部内容。当应用程序只需检查或保存选定项目时,请枚举 Archive.Entries。

3. 提取存档和解压 ZIP 文件一样吗?

解压 ZIP 专指 ZIP 文件。提取是更广泛的操作,也覆盖 7Z、RAR、TAR、CAB、CPIO 和 WIM 等格式。

4. .NET 应用程序可以打开受密码保护的存档吗?

对于适用格式,在提供有效凭据和匹配解密设置时,Aspose.ZIP 支持基于密码的访问。

5. 应如何安全地提取上传的存档?

使用隔离临时存储,验证每个输出路径,限制接受的格式,执行压缩和解压大小限制,设置处理超时,并在操作后移除临时数据。