Ekstrak Konten DOTX dari ZIP di .NET
Gunakan Aspose.ZIP for .NET untuk membuka arsip ZIP, memeriksa entrinya, dan memulihkan hanya file DOTX yang dibutuhkan aplikasi C# Anda. Pada halaman ini, ekstraksi berarti menemukan item berekstensi .dotx di dalam kontainer ZIP lalu menulisnya ke folder tujuan yang terkontrol. Aspose.ZIP memulihkan file yang tersimpan di arsip; library ini tidak menafsirkan atau mengonversi isi internal file tersebut.
Ekstraksi selektif berguna untuk ingest dokumen, pemrosesan unggahan, paket laporan, dan alur manajemen konten. Aplikasi dapat melewati entri yang tidak relevan, memeriksa nama dan ukuran, lalu meneruskan file yang disetujui ke tahap berikutnya tanpa harus membongkar seluruh paket.
Cara Mengekstrak file DOTX dari ZIP dengan C#
Instal
paket Aspose.ZIP for .NET
dan gunakan namespace Aspose.Zip. Metadata arsip tersedia sebelum file ditulis, sehingga aplikasi dapat memeriksa ArchiveEntry.Name, ArchiveEntry.IsDirectory, dan ArchiveEntry.UncompressedSize sebelum menyimpan file dokumen.
Package Manager Console Command
PM> Install-Package Aspose.Zip
Setelah instalasi, buka ZIP dengan Archive, telusuri Archive.Entries, pilih entri non-direktori yang berekstensi .dotx, lalu panggil ArchiveEntry.Extract untuk setiap tujuan yang disetujui. Contoh ini hanya memakai nama file akhir, sehingga jalur yang tersimpan di arsip tidak dapat menulis ke luar folder tujuan.
Langkah Mengekstrak File DOTX di C#
- Tentukan jalur ZIP sumber dan buat direktori output yang terisolasi.
- Buka paket dengan class
Archive. - Telusuri
Archive.Entries, bukan langsung mengekstrak seluruh paket. - Lewati direktori dan pilih nama file yang menggunakan ekstensi
.dotx. - Bangun jalur tujuan yang tetap berada di dalam root output yang disetujui.
- Tolak entri yang melebihi batas ukuran hasil ekstraksi.
- Simpan setiap entri yang disetujui dengan
ArchiveEntry.Extract.
Persyaratan Sistem
Sebelum menjalankan contoh, pastikan lingkungan memiliki:
- Runtime .NET yang didukung di Windows, Linux, atau macOS.
- Visual Studio, JetBrains Rider, Visual Studio Code, atau lingkungan pengembangan C# lainnya.
- Aspose.ZIP for .NET yang diinstal melalui NuGet atau direferensikan sebagai assembly.
- Akses baca ke ZIP sumber dan akses tulis ke direktori tujuan.
- Batas ukuran, waktu eksekusi, dan penyimpanan sementara yang jelas untuk arsip tidak tepercaya.
Contoh C#: Ekstrak File DOTX Terpilih dari ZIP
Kode ini membuka paket ZIP, melewati direktori, memfilter entri berdasarkan ekstensi yang diizinkan, dan menulis file yang cocok ke satu direktori output. Dengan membuang jalur arsip, segmen direktori induk tidak dapat mengontrol lokasi tujuan. Kode produksi juga harus menentukan aturan deterministik untuk nama file duplikat.
Ekstrak File DOTX dari ZIP - C#
using Aspose.Zip;
using System;
using System.IO;
string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-dotx");
string[] allowedExtensions = { ".dotx" };
const ulong MaxEntrySize = 100UL * 1024 * 1024;
Directory.CreateDirectory(outputDirectory);
using (var archive = new Archive(archivePath))
{
foreach (ArchiveEntry entry in archive.Entries)
{
if (entry.IsDirectory) continue;
string fileName = Path.GetFileName(entry.Name);
if (string.IsNullOrWhiteSpace(fileName)) continue;
string extension = Path.GetExtension(fileName);
if (!Array.Exists(
allowedExtensions,
value => string.Equals(value, extension, StringComparison.OrdinalIgnoreCase)))
{
continue;
}
if (entry.UncompressedSize > MaxEntrySize)
{
throw new InvalidDataException(
$"Entri '{fileName}' melebihi batas ekstraksi 100 MB.");
}
string destinationPath = Path.Combine(outputDirectory, fileName);
entry.Extract(destinationPath);
}
}
Catatan Implementasi untuk File DOTX
Filter berdasarkan ekstensi hanya mengidentifikasi kandidat; itu tidak membuktikan bahwa isi file valid atau aman. Jika file akan ditampilkan, diindeks, atau dikonversi, validasi struktur dokumen, encoding, kepatuhan format, dan kontennya dengan komponen dokumen.
Contoh ini sengaja meratakan jalur yang tersimpan di arsip. Jika dua entri yang diterima memiliki nama file akhir yang sama, ArchiveEntry.Extract dapat menimpa file yang sudah ada. Tentukan kebijakan sebelum ekstraksi: tolak duplikat, buat nama unik, atau pertahankan struktur folder relatif yang sudah divalidasi. Gunakan tujuan terpisah untuk setiap pekerjaan agar output dari permintaan paralel tidak bercampur.
Pertimbangan Keamanan dan Privasi
Perlakukan ZIP yang diunggah, nama entri, dan kontennya sebagai input tidak tepercaya. Jangan gabungkan ArchiveEntry.Name langsung dengan direktori output, karena entri dapat berisi jalur absolut atau segmen yang naik ke direktori induk. Contoh ini menggunakan Path.GetFileName; jika folder perlu dipertahankan, resolve jalur akhir dan pastikan tetap berada di dalam root yang disetujui.
Batasi ukuran terkompresi, ukuran hasil ekstraksi per entri dan total, jumlah entri, waktu pemrosesan, serta pekerjaan paralel. Gunakan penyimpanan sementara dengan izin terbatas, hapus hasil parsial setelah kegagalan, dan hindari mencatat kata sandi, nama file privat, atau konten hasil ekstraksi.
FAQ Ekstraksi File DOTX
Bagaimana cara mengekstrak hanya file DOTX dari arsip ZIP di C#?
Buka ZIP dengan Archive, telusuri Archive.Entries, filter entri non-direktori berdasarkan ekstensi .dotx, lalu panggil Extract untuk setiap jalur output yang sudah divalidasi.
Apakah Aspose.ZIP memvalidasi isi internal file DOTX?
Tidak. Aspose.ZIP memulihkan file yang tersimpan di arsip. Membaca, memvalidasi, atau mengonversi isinya adalah tugas komponen khusus untuk format tersebut.
Apakah pola seleksi yang sama dapat digunakan untuk kontainer 7Z, RAR, atau TAR?
Konsepnya sama, tetapi setiap kontainer harus dibuka dengan class arsip Aspose.ZIP yang sesuai. Jenis entri dan operasi ekstraksi yang tersedia dapat berbeda menurut format.
Bagaimana menangani nama file DOTX yang duplikat?
Tentukan aturan sebelum ekstraksi: tolak duplikat, buat nama unik, atau pertahankan struktur folder relatif yang sudah divalidasi.
Panduan Terkait untuk Mengekstrak Dokumen
Jelajahi halaman ekstraksi C# untuk format dokumen dan publikasi yang sering disimpan dalam arsip.