Trích xuất tệp lưu trữ trong C# và .NET

Giải nén ZIP và các định dạng lưu trữ khác theo chương trình trong ứng dụng .NET.

Trích xuất tệp lưu trữ trong .NET

Aspose.ZIP for .NET là thư viện được quản lý để mở kho lưu trữ và giải nén nội dung trong ứng dụng C#. API cho phép đọc mục lưu trữ, trích xuất toàn bộ hoặc các mục đã chọn, giữ cấu trúc thư mục và ghi đầu ra vào thư mục hoặc luồng. Việc xử lý diễn ra bên trong ứng dụng, nên quy trình phía máy chủ không phụ thuộc vào phần mềm desktop hoặc tiện ích dòng lệnh.

Các trường hợp sử dụng thường gặp gồm nhập tài liệu, khôi phục bản sao lưu, đóng gói triển khai, xử lý tệp tải lên và trao đổi dữ liệu tự động. Cùng một API có thể chạy trong dịch vụ ASP.NET, worker nền, ứng dụng desktop, tác vụ đám mây và công cụ CI/CD. Ứng dụng kiểm soát định dạng và mục nào được chấp nhận cũng như nơi lưu đầu ra.

Trình trích xuất tệp lưu trữ là gì?

Trình trích xuất tệp lưu trữ mở một vùng chứa có một hoặc nhiều tệp và khôi phục nội dung đã lưu. Quy trình thường đọc siêu dữ liệu, nhận diện mục và thư mục, giải nén dữ liệu rồi ghi kết quả vào vị trí được chấp thuận. Kho lưu trữ được mã hóa cũng cần thông tin xác thực và thiết lập phù hợp với định dạng.

Cách hoạt động của trích xuất kho lưu trữ

Một quy trình C# điển hình gồm nhận kho lưu trữ, xác định định dạng, mở vùng chứa bằng lớp API phù hợp, kiểm tra các mục khi cần lọc, xác thực đường dẫn và giới hạn tài nguyên, trích xuất nội dung được chấp thuận vào đích tách biệt, rồi chuyển đầu ra sang bước tiếp theo của ứng dụng.

Định dạng lưu trữ có thể trích xuất

Thư viện làm việc với các định dạng lưu trữ và nén phổ biến, bao gồm ZIP, 7Z, RAR, TAR, GZIP, BZIP2, XZ, LZIP, Z, CPIO, CAB và WIM. Hãy chọn bộ xử lý khớp với vùng chứa thực tế thay vì chỉ dựa vào phần mở rộng tệp.

Quy trình trích xuất tệp thường dùng

Giải nén toàn bộ kho lưu trữ. Dùng khi mọi mục đều cần thiết và đầu vào đã qua xác thực.

Chỉ đọc các mục đã chọn. Kiểm tra Archive.Entries và áp dụng quy tắc ứng dụng trước khi ghi dữ liệu.

Xử lý luồng. Đầu vào dạng luồng phù hợp với tải lên ASP.NET, lưu trữ đối tượng, cơ sở dữ liệu và hệ thống theo thông điệp.

Mở nội dung được bảo vệ. Cung cấp thông tin xác thực qua thiết lập giải mã của định dạng liên quan và không ghi mật khẩu vào log.

Xử lý đầu vào lớn như công việc có giới hạn. Giới hạn kích thước nén, kích thước sau giải nén, số mục, thời gian xử lý và dung lượng tạm.

Thêm Aspose.ZIP vào dự án C#

Cài đặt gói Aspose.ZIP NuGet trong dự án C# nhắm tới môi trường .NET được hỗ trợ trên Windows, Linux hoặc macOS. Sau đó tham chiếu namespace cần thiết và chọn lớp tương ứng với vùng chứa đầu vào.

Package Manager Console

PM> Install-Package Aspose.Zip

Ví dụ C#: giải nén tệp ZIP

ZIP là ví dụ ngắn gọn cho quy trình chung. Mã mở đầu vào và ghi nội dung vào thư mục đích.

Trích xuất nội dung ZIP vào thư mục

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);
}

Trích xuất kho lưu trữ an toàn trong production

Hãy xem kho lưu trữ nhận từ người dùng hoặc hệ thống bên ngoài là đầu vào không đáng tin cậy. Trước khi ghi một mục, hãy phân giải đường dẫn đầu ra so với đích đã chấp thuận và từ chối đường dẫn tuyệt đối, truy cập thư mục cha hoặc mọi kết quả nằm ngoài thư mục đó.

Đặt giới hạn cho kích thước nén, tổng kích thước sau giải nén, kích thước từng mục, số lượng mục, thời gian thực thi và mức đồng thời. Dùng thư mục tạm riêng cho từng công việc, chỉ đưa đầu ra đã xác thực vào bước tiếp theo và dọn dẹp sau cả thao tác thành công lẫn thất bại.

Thử trích xuất trong trình duyệt

Ứng dụng trích xuất miễn phí trên trình duyệt cho phép thử đầu vào mẫu mà không cần cài đặt phần mềm. Công cụ trực tuyến phục vụ tác vụ tương tác; thư viện .NET dành cho dịch vụ lặp lại, xử lý nền và pipeline doanh nghiệp.

Hướng dẫn trích xuất cho từng loại lưu trữ

Chi tiết triển khai thay đổi theo vùng chứa. Hãy dùng hướng dẫn cho đúng loại đầu vào khi chuyển từ tổng quan sang triển khai để tránh áp dụng giả định của ZIP cho 7Z, RAR, TAR, CAB hoặc các định dạng nén dạng luồng.

Hướng dẫn trích xuất lưu trữ theo định dạng tệp

Duyệt các trang trích xuất C# cho tệp và tài nguyên thường được lưu trong kho ZIP.

Tài nguyên trích xuất kho lưu trữ

FAQ về trích xuất kho lưu trữ

1. Làm cách nào để trích xuất tệp lưu trữ trong C#?

Cài đặt Aspose.ZIP, mở đầu vào bằng lớp khớp với định dạng của nó, rồi giải nén toàn bộ vùng chứa hoặc các mục đã chọn vào thư mục hoặc luồng được chấp thuận.

2. Làm cách nào để trích xuất tệp từ kho ZIP?

Tạo instance Archive cho đầu vào ZIP và gọi ExtractToDirectory để giải nén mọi thứ. Duyệt Archive.Entries khi ứng dụng chỉ cần kiểm tra hoặc lưu một số mục.

3. Trích xuất kho lưu trữ có giống giải nén ZIP không?

Giải nén ZIP áp dụng riêng cho tệp ZIP. Trích xuất là thao tác rộng hơn và cũng bao gồm các định dạng như 7Z, RAR, TAR, CAB, CPIO và WIM.

4. Ứng dụng .NET có thể mở kho lưu trữ được bảo vệ bằng mật khẩu không?

Aspose.ZIP hỗ trợ truy cập bằng mật khẩu cho các định dạng phù hợp khi có thông tin xác thực hợp lệ và thiết lập giải mã tương ứng.

5. Nên trích xuất kho lưu trữ tải lên như thế nào cho an toàn?

Dùng vùng tạm tách biệt, xác thực mọi đường dẫn đầu ra, giới hạn định dạng được chấp nhận, áp dụng giới hạn kích thước, đặt thời gian chờ xử lý và xóa dữ liệu tạm sau thao tác.