Extrahera DOTX-innehåll från ZIP i .NET

Använd Aspose.ZIP for .NET för att öppna ett ZIP-arkiv, inspektera posterna och återställa endast de DOTX-filer som C#-applikationen behöver. På den här sidan betyder extrahering att objekt med ändelsen .dotx hittas i ZIP-containern och skrivs till en kontrollerad destination. Aspose.ZIP återställer filen som lagras i arkivet; det tolkar eller konverterar inte filens interna innehåll.

Selektiv extrahering är användbar för dokumentinläsning, uppladdningshantering, rapportpaket och innehållsflöden. Applikationen kan hoppa över irrelevanta poster, kontrollera namn och storlekar och skicka godkända filer vidare utan att packa upp hela paketet.

Så extraherar du DOTX-filer från ZIP med C#

Installera Aspose.ZIP for .NET-paketet och referera till namespace Aspose.Zip. Arkivmetadata finns tillgängliga innan filer skrivs, så applikationen kan kontrollera ArchiveEntry.Name, ArchiveEntry.IsDirectory och ArchiveEntry.UncompressedSize innan dokumentfiler sparas.


Package Manager Console Command

PM> Install-Package Aspose.Zip

Efter installation öppnar du ZIP med Archive, går igenom Archive.Entries, väljer icke-katalogposter med ändelsen .dotx och anropar ArchiveEntry.Extract för varje godkänd destination. Exemplet använder bara det slutliga filnamnet, så arkiverade sökvägar kan inte skriva utanför målmappen.

Steg för att extrahera DOTX-filer i C#

  • Ange sökvägen till käll-ZIP och skapa en isolerad utmatningskatalog.
  • Öppna paketet med klassen Archive.
  • Gå igenom Archive.Entries i stället för att extrahera hela paketet direkt.
  • Hoppa över kataloger och välj filnamn med ändelsen .dotx.
  • Skapa en målsökväg som ligger kvar inom godkänd utmatningsrot.
  • Avvisa poster som överskrider konfigurerad extraherad storlek.
  • Spara varje godkänd post med ArchiveEntry.Extract.

Systemkrav

  • En stödd .NET-runtime på Windows, Linux eller macOS.
  • Visual Studio, JetBrains Rider, Visual Studio Code eller annan C#-utvecklingsmiljö.
  • Aspose.ZIP for .NET installerat via NuGet eller refererat som assembly.
  • Läsåtkomst till käll-ZIP och skrivåtkomst till målkatalogen.
  • Tydliga gränser för storlek, körtid och temporär lagring för opålitliga arkiv.

C#-exempel: extrahera valda DOTX-filer från ZIP

Koden öppnar ett ZIP-paket, hoppar över kataloger, filtrerar poster efter tillåten ändelse och skriver matchande filer till en enda utmatningskatalog. Genom att släppa arkiverade sökvägar kan överordnade katalogsegment inte styra destinationen. Produktionskod bör även definiera en deterministisk regel för dubbla filnamn.

Extrahera DOTX-filer från 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(
                $"Posten '{fileName}' överskrider extraheringsgränsen på 100 MB.");
        }

        string destinationPath = Path.Combine(outputDirectory, fileName);
        entry.Extract(destinationPath);
    }
}

Implementationsnoteringar för DOTX-filer

Filtrering på ändelse identifierar bara kandidatfiler; det bevisar inte att innehållet är giltigt eller säkert. Om filen ska visas, indexeras eller konverteras bör struktur, kodning, formatöverensstämmelse och innehåll valideras med en dokumentkomponent.

Exemplet plattar avsiktligt ut arkiverade sökvägar. Om två godkända poster har samma slutliga filnamn kan ArchiveEntry.Extract skriva över en befintlig fil. Definiera policyn före extrahering: avvisa dubbletter, skapa unika namn eller bevara en validerad relativ mappstruktur.

Säkerhet och integritet

Behandla uppladdade ZIP-filer, postnamn och innehåll som opålitlig indata. Kombinera inte ArchiveEntry.Name direkt med utmatningskatalogen, eftersom en post kan innehålla absoluta sökvägar eller segment till överordnade kataloger. Exemplet använder Path.GetFileName; om mappar ska bevaras, lös den slutliga sökvägen och kontrollera att den ligger inom godkänd rot.

Begränsa komprimerad storlek, extraherad storlek per post och totalt, antal poster, bearbetningstid och parallella jobb. Använd temporär lagring med begränsade rättigheter, ta bort partiella resultat efter fel och logga inte lösenord, privata filnamn eller extraherat innehåll.

FAQ om extrahering av DOTX-filer

Hur extraherar jag bara DOTX-filer från ett ZIP-arkiv i C#?

Öppna ZIP med Archive, gå igenom Archive.Entries, filtrera icke-katalogposter på ändelsen .dotx och anropa Extract för varje validerad utmatningsväg.

Validerar Aspose.ZIP det interna innehållet i den extraherade DOTX-filen?

Nej. Aspose.ZIP återställer filen som lagras i arkivet. Läsning, validering eller konvertering hör till en komponent som stöder formatet.

Kan samma urvalsmönster användas med 7Z-, RAR- eller TAR-containrar?

Principen är densamma, men varje container måste öppnas med motsvarande Aspose.ZIP-arkivklass. Posttyper och extraheringsåtgärder kan skilja sig mellan format.

Hur bör dubbla DOTX-filnamn hanteras?

Bestäm regeln före extrahering: avvisa dubbletter, skapa unika namn eller bevara en validerad relativ mappstruktur.