ASE-Dateien aus ZIP in .NET extrahieren

Verwenden Sie Aspose.ZIP for .NET, um ein ZIP-Archiv zu prüfen und nur die ASE-Dateien wiederherzustellen, die Ihre C#-Anwendung benötigt. Auf dieser Seite bedeutet Extraktion, passende Dateien aus einem ZIP-Container auszuwählen und in ein kontrolliertes Zielverzeichnis zu schreiben. Aspose.ZIP interpretiert oder konvertiert den internen Inhalt der Datei dabei nicht.

Selektive Extraktion eignet sich für 3D-Asset-Importe, Modellprüfungen, Visualisierungspipelines und automatisierte Verarbeitung von Projektpaketen. Die Anwendung kann nicht relevante Einträge überspringen, Ausgabe- und Ressourcenregeln durchsetzen und freigegebene Dateien an den nächsten Dienst übergeben, ohne das vollständige Archiv zu entpacken.

ASE-Dateien aus ZIP mit C# extrahieren

Installieren Sie das Aspose.ZIP-Paket for .NET und importieren Sie den Namespace Aspose.Zip. Archivmetadaten stehen bereits vor dem Schreiben zur Verfügung. So kann die Anwendung ArchiveEntry.Name, ArchiveEntry.IsDirectory und ArchiveEntry.UncompressedSize als Teil ihrer Annahmeregeln auswerten.


Package Manager Console Command

PM> Install-Package Aspose.Zip

Öffnen Sie die ZIP-Datei mit Archive, durchlaufen Sie Archive.Entries, wählen Sie Einträge mit der Erweiterung .ase aus und rufen Sie ArchiveEntry.Extract für jedes freigegebene Ziel auf. Das Beispiel reduziert archivierte Pfade auf den endgültigen Dateinamen, damit Einträge das Zielverzeichnis nicht verlassen können.

Schritte zum Wiederherstellen von ASE-Dateien in C#

  • Den Quellpfad der ZIP-Datei auflösen und ein isoliertes Ausgabeverzeichnis erstellen.
  • Das Paket mit der Klasse Archive öffnen.
  • Archive.Entries durchlaufen, statt jeden Eintrag zu entpacken.
  • Einträge auswählen, deren endgültiger Dateiname die Erweiterung .ase verwendet.
  • Einen Zielpfad erstellen, der unterhalb des freigegebenen Ausgabestamms bleibt.
  • Einträge ablehnen, die das konfigurierte Limit für die entpackte Größe überschreiten.
  • Jeden akzeptierten Eintrag mit ArchiveEntry.Extract speichern.

Systemanforderungen

Stellen Sie vor dem Ausführen des Beispiels sicher, dass die Umgebung Folgendes enthält:

  • Eine unterstützte .NET-Laufzeit unter Windows, Linux oder macOS.
  • Visual Studio, JetBrains Rider, Visual Studio Code oder eine andere C#-Entwicklungsumgebung.
  • Aspose.ZIP for .NET, installiert über NuGet oder als Assembly referenziert.
  • Lesezugriff auf das Quellarchiv und Schreibzugriff auf das Zielverzeichnis.
  • Speicher- und Ausführungslimits, die zu nicht vertrauenswürdigen komprimierten Eingaben passen.

C#-Beispiel: ASE-Dateien in einem ZIP-Archiv auswählen

Der Code öffnet ein ZIP-Paket, filtert Nicht-Verzeichniseinträge nach der freigegebenen Erweiterung und schreibt passende Dateien in ein Ausgabeverzeichnis. Das Reduzieren archivierter Pfade hält das Beispiel kompakt und verhindert, dass übergeordnete Pfadsegmente das Ziel bestimmen. Produktionscode sollte außerdem eine deterministische Regel für doppelte Ausgabenamen festlegen.

ASE-Dateien aus ZIP extrahieren - C#

using Aspose.Zip;
using System;
using System.IO;

string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-ase");
string[] allowedExtensions = { ".ase" };
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(
                $"Eintrag '{fileName}' überschreitet das Extraktionslimit von 100 MB.");
        }

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

Implementierungshinweise für ASE-Pakete

Eine passende Erweiterung kennzeichnet nur eine mögliche Modelldatei. Geometrie, Materialien, Referenzen und Formatintegrität sollten von der 3D-Komponente geprüft werden, die die extrahierte Datei anschließend verarbeitet.

Das Beispiel reduziert archivierte Pfade auf einfache Dateinamen. Wenn zwei akzeptierte Einträge denselben Endnamen haben, kann ArchiveEntry.Extract eine vorhandene Ausgabedatei überschreiben. Legen Sie deshalb eine eindeutige Kollisionsregel fest: Duplikate ablehnen, eindeutige Namen erzeugen oder eine validierte relative Ordnerstruktur beibehalten. Verwenden Sie für jeden Job ein eigenes Zielverzeichnis, damit parallele Anfragen keine Ergebnisse vermischen.

Sicherheits- und Datenschutzaspekte

Behandeln Sie Archivnamen und Nutzdaten als nicht vertrauenswürdig. Hängen Sie ArchiveEntry.Name niemals direkt an den Zielpfad an, da absolute Pfade und übergeordnete Verzeichnisse außerhalb des vorgesehenen Ordners schreiben könnten. Das Standardbeispiel verwendet Path.GetFileName; Workflows, die Ordner beibehalten, müssen den vollständigen Pfad auflösen und prüfen, dass er unterhalb des freigegebenen Stamms bleibt.

Setzen Sie Limits für die komprimierte Eingabegröße, die entpackte Größe pro Eintrag und insgesamt, die Anzahl der Einträge, die Verarbeitungszeit und parallele Jobs. Extrahieren Sie in eingeschränkten temporären Speicher, bereinigen Sie Teilausgaben nach Fehlern, scannen Sie Dateien bei Bedarf und vermeiden Sie das Protokollieren privater Dateinamen oder Dateiinhalte.

ASE-Extraktion FAQ

Wie extrahiere ich in C# nur ASE-Dateien aus einem ZIP-Archiv?

Öffnen Sie die ZIP-Datei mit Archive, durchlaufen Sie Archive.Entries, filtern Sie passende Einträge nach der Erweiterung .ase und rufen Sie Extract für jeden akzeptierten Zielpfad auf.

Validiert Aspose.ZIP den Inhalt einer extrahierten ASE-Datei?

Nein. Die Erweiterung ist nur ein erster Filter. Validieren Sie die wiederhergestellte Datei mit einer Komponente, die ASE-Inhalte versteht.

Kann dasselbe Auswahlmuster mit 7Z-, RAR- oder TAR-Containern verwendet werden?

Ja, aber jeder Container muss mit der passenden Aspose.ZIP-Archivklasse geöffnet werden. Eintragstypen und verfügbare Extraktionsmethoden können je nach Archivformat unterschiedlich sein.

Wie sollten doppelte ASE-Dateinamen behandelt werden?

Legen Sie die Regel vor der Extraktion fest: Duplikate ablehnen, eindeutige Namen erzeugen oder eine validierte relative Ordnerstruktur beibehalten.