Εξαγωγή αρχείων HTML από ZIP σε .NET

Χρησιμοποιήστε το Aspose.ZIP for .NET για να ελέγξετε ένα ZIP archive και να επαναφέρετε μόνο τα αρχεία HTML που χρειάζεται η C# εφαρμογή σας. Σε αυτή τη σελίδα, extraction σημαίνει επιλογή των κατάλληλων αρχείων από ZIP container και εγγραφή τους σε ελεγχόμενο destination directory. Το Aspose.ZIP δεν ερμηνεύει ούτε μετατρέπει το εσωτερικό περιεχόμενο του αρχείου.

Η selective extraction ταιριάζει σε μεταφορά web περιεχομένου, static-site imports, επεξεργασία templates, documentation builds και packaged application resources. Η εφαρμογή μπορεί να αγνοεί μη σχετικά entries, να επιβάλλει output και resource policies και να περνά approved files στο επόμενο service χωρίς να αποσυμπιέζει ολόκληρο το archive.

Εξαγωγή αρχείων HTML από ZIP με C#

Εγκαταστήστε το Aspose.ZIP package for .NET και εισαγάγετε το namespace Aspose.Zip. Τα archive metadata είναι διαθέσιμα πριν γραφτεί οτιδήποτε, ώστε η εφαρμογή να αξιολογεί ArchiveEntry.Name, ArchiveEntry.IsDirectory και ArchiveEntry.UncompressedSize ως μέρος της acceptance policy.


Package Manager Console Command

PM> Install-Package Aspose.Zip

Ανοίξτε το ZIP με Archive, διατρέξτε το Archive.Entries, επιλέξτε entries με την επέκταση .html και καλέστε ArchiveEntry.Extract για κάθε εγκεκριμένο destination. Το παράδειγμα μειώνει τα archived paths στο τελικό filename, ώστε τα entries να μην μπορούν να βγουν από το target directory.

Βήματα για επαναφορά αρχείων HTML σε C#

  • Επιλύστε το source ZIP path και δημιουργήστε isolated output directory.
  • Ανοίξτε το package με την class Archive.
  • Διατρέξτε το Archive.Entries αντί να επεκτείνετε κάθε item.
  • Επιλέξτε entries των οποίων το τελικό filename χρησιμοποιεί την επέκταση .html.
  • Δημιουργήστε destination path που παραμένει κάτω από το approved output root.
  • Απορρίψτε entries που υπερβαίνουν το configured expanded-size limit.
  • Αποθηκεύστε κάθε accepted item με ArchiveEntry.Extract.

Απαιτήσεις συστήματος

Πριν εκτελέσετε το παράδειγμα, βεβαιωθείτε ότι το περιβάλλον περιλαμβάνει:

  • Υποστηριζόμενο .NET runtime σε Windows, Linux ή macOS.
  • Visual Studio, JetBrains Rider, Visual Studio Code ή άλλο C# development environment.
  • Aspose.ZIP for .NET εγκατεστημένο μέσω NuGet ή referenced ως assembly.
  • Read access στο source archive και write access στο destination directory.
  • Storage και execution limits κατάλληλα για μη αξιόπιστη compressed input.

Παράδειγμα C#: επιλογή αρχείων HTML μέσα σε ZIP archive

Ο κώδικας ανοίγει ένα ZIP package, φιλτράρει non-directory entries με βάση την approved extension και γράφει τα matching files σε ένα output directory. Το flattening των archived paths κρατά το παράδειγμα σύντομο και αποτρέπει parent-directory segments από το να ελέγξουν το destination. Ο production κώδικας πρέπει επίσης να ορίζει deterministic policy για duplicate output names.

Εξαγωγή αρχείων HTML από ZIP - C#

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

string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-html");
string[] allowedExtensions = { ".html" };
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(
                $"Το entry '{fileName}' υπερβαίνει το όριο εξαγωγής των 100 MB.");
        }

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

Σημειώσεις υλοποίησης για HTML packages

Το επαναφερόμενο markup και τα scripts παραμένουν μη αξιόπιστες είσοδοι. Κάντε parse ή render σε περιορισμένο περιβάλλον και εφαρμόστε τους κανόνες της εφαρμογής για active content, εξωτερικές αναφορές και encoding.

Το παράδειγμα μειώνει τα archived paths σε απλά ονόματα αρχείων. Αν δύο αποδεκτά entries έχουν το ίδιο τελικό όνομα, το ArchiveEntry.Extract μπορεί να αντικαταστήσει υπάρχον output file. Ορίστε ξεκάθαρο κανόνα σύγκρουσης: απόρριψη duplicates, δημιουργία μοναδικών ονομάτων ή διατήρηση validated relative folder structure. Χρησιμοποιήστε ξεχωριστό destination για κάθε job, ώστε παράλληλα requests να μη μπερδεύουν αποτελέσματα.

Ζητήματα ασφάλειας και απορρήτου

Αντιμετωπίστε archive names και payloads ως μη αξιόπιστα. Μην προσθέτετε ποτέ το ArchiveEntry.Name απευθείας στο destination path, επειδή absolute paths και parent-directory segments μπορούν να γράψουν έξω από τον προβλεπόμενο φάκελο. Το standard παράδειγμα χρησιμοποιεί Path.GetFileName; workflows που διατηρούν directories πρέπει να επιλύουν το full path και να επιβεβαιώνουν ότι παραμένει κάτω από το approved root.

Ορίστε limits για compressed input size, per-entry και total expanded size, entry count, processing time και concurrent jobs. Εξαγάγετε σε restricted temporary storage, καθαρίστε partial output μετά από failures, σαρώστε αρχεία όταν το απαιτεί η εφαρμογή και αποφύγετε να γράφετε σε logs private filenames ή file contents.

FAQ εξαγωγής HTML

Πώς εξάγω μόνο αρχεία HTML από ZIP archive σε C#;

Ανοίξτε το ZIP με Archive, διατρέξτε το Archive.Entries, φιλτράρετε matching entries με βάση την επέκταση .html και καλέστε Extract για κάθε accepted destination path.

Επικυρώνει το Aspose.ZIP το περιεχόμενο ενός εξαγμένου αρχείου HTML;

Όχι. Η επέκταση είναι μόνο ένα πρώτο φίλτρο. Επικυρώστε το επαναφερόμενο αρχείο με component που κατανοεί περιεχόμενο HTML.

Μπορεί το ίδιο selection pattern να χρησιμοποιηθεί με 7Z, RAR ή TAR containers;

Ναι, αλλά κάθε container πρέπει να ανοίγει με την αντίστοιχη Aspose.ZIP archive class. Οι entry types και οι διαθέσιμες extraction methods μπορεί να διαφέρουν ανά archive format.

Πώς πρέπει να χειρίζονται τα duplicate HTML filenames;

Ορίστε τον κανόνα πριν από την extraction: απόρριψη duplicates, δημιουργία μοναδικών ονομάτων ή διατήρηση validated relative folder structure.