XHTML-tartalom kicsomagolása ZIP-ből .NET-ben

Az Aspose.ZIP for .NET segítségével megnyithat egy ZIP archívumot, végigjárhatja a bejegyzéseit, és csak azokat a XHTML-fájlokat állíthatja vissza, amelyekre a C# alkalmazásnak szüksége van. Ezen az oldalon a kicsomagolás azt jelenti, hogy a ZIP konténerben tárolt, .xhtml kiterjesztésű elemeket megkeressük, majd egy ellenőrzött célmappába írjuk. Az Aspose.ZIP az archívumban tárolt fájlt állítja vissza; a fájl belső tartalmát nem értelmezi és nem konvertálja.

A szelektív kicsomagolás különosen hasznos dokumentumbeolvasásnal, feltöltések feldolgozásakor, archivalt jelentéscsomagoknal és tartalomkezelo folyamatokban. Az alkalmazás kihagyhatja a nem relevans bejegyzéseket, ellenőrizheti a neveket és a méreteket, majd a jóváhagyott fájlokat továbbadhatja a következő üzleti komponensnek anélkül, hogy a teljes csomagot ki kellene bontania.

Hogyan csomagolhat ki XHTML-fájlokat ZIP-ből C# használatával

Telepítse az Aspose.ZIP for .NET csomagot , majd hivatkozzon az Aspose.Zip névtérre. Az archívum metaadatai meg a fájlok írása előtt elérhetők, így az alkalmazás ellenőrizheti az ArchiveEntry.Name, ArchiveEntry.IsDirectory és ArchiveEntry.UncompressedSize értékeket, mielőtt bármilyen dokumentumfájlokat mentene.


Package Manager Console Command

PM> Install-Package Aspose.Zip

A telepítés után nyissa meg a ZIP-et az Archive osztállyal, járja be az Archive.Entriés gyűjteményt, válassza ki a(z) .xhtml kiterjesztésű, nem könyvtár típusú bejegyzéseket, majd hívja meg az ArchiveEntry.Extract metódust minden jóváhagyott célútvonalra. A példa csak a végső fájlnévet használja, ezert az archívumban tárolt útvonalák nem írhatnak a célmappán kívülre.

XHTML-fájlok kicsomagolásanak lépései C#-ban

  • Határozza meg a forrás ZIP útvonalát, és hozzon létre egy elkülönített kimeneti könyvtárat.
  • Nyissa meg a csomagot az Archive osztállyal.
  • A teljes csomag azonnali kibontása helyett járja be az Archive.Entries gyűjteményt.
  • Hagyja ki a könyvtárakat, és csak a(z) .xhtml kiterjesztésű fájlnéveket válassza ki.
  • Építsen olyan célútvonalát, amely az engedelyezett kimeneti gyökéren belül marad.
  • Utasítsa el a beállított kicsomagolt méretkorlátot meghaládó bejegyzéseket.
  • Mentsen minden jóváhagyott bejegyzést az ArchiveEntry.Extract metódussal.

Rendszerkövetelmények

A példa futtatasa előtt ellenőrizze, hogy a környezet tartalmazza-e a következőket:

  • Támogatott .NET futtatókörnyezet Windows, Linux vagy macOS rendszeren.
  • Visual Studio, JetBrains Rider, Visual Studio Code vagy más C# fejlesztőkörnyezet.
  • NuGeten keresztül telepített vagy assemblyként hivatközött Aspose.ZIP for .NET.
  • Olvasási jogosultság a forrás ZIP-hez és írási jogosultság a célkönyvtárhoz.
  • Világos méret-, futásiidő- és ideiglenes tárhelykorlátok nem megbízható archívumokhoz.

C# példa: kijelölt XHTML-fájlok kicsomagolása ZIP-ből

A kód megnyit egy ZIP csomagot, kiszűri a nem könyvtár típusú bejegyzéseket a megengedett kiterjesztés alapján, és az egyezo fájlokat egyetlen kimeneti könyvtárba írja. Az archivalt útvonalák eldobasa megakadalyozza, hogy szülő könyvtári szegmensek irányítsák a célhelyet. Elés kódban determinisztikus szabályt kell adni az azonos fájlnévekre is.

XHTML-fájlok kicsomagolása ZIP-ből - C#

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

string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-xhtml");
string[] allowedExtensions = { ".xhtml" };
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(
                $"A(z) '{fileName}' bejegyzés meghaládja a 100 MB-os kicsomagolási korlátot.");
        }

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

Megvalósítási megjegyzések XHTML-fájlokhoz

A kiterjesztés szerinti szurés csak jelölt fájlokat azonosít; nem bizonyitja, hogy a tartalom ervenyés vagy biztonságos. A fájl belső szerkezetet, megfelelőseget, kódolásat és tartalmat dokumentumfeldolgozó komponenssel ellenőrizd, ha a következő lepés megjelenítes, indexelés vagy konverzio.

A példa szándékosan kilaposítja az archívumban tárolt útvonalakat. Ha két elfogadott bejegyzés végső fájlnéve azonos, az ArchiveEntry.Extract felülírhat egy már létező fájlt. Határozzon meg egyértelmű szabályt: utasítsa el a duplikátumot, generáljon egyedi nevet, vagy őrizzen meg egy előzetesen validált relatív mappastruktúrát. Minden feldolgozási feladathoz használjon külön célkönyvtárat.

Biztonsági és adatvédelmi szempontok

A feltöltött ZIP-et, a bejegyzésneveket és a tartalmat kezelje nem megbízható bemenetkent. Ne fűzze az ArchiveEntry.Name értéket közvetlenül a kimeneti könyvtárhoz, mert egy bejegyzés abszolút útvonalat vagy szülő könyvtárra mutato szegmenseket tartalmazhat. A példa a Path.GetFileName metódust használja; ha meg kell orizni a mappákat, oldja fel a végső útvonalát, és ellenőrizze, hogy az engedelyezett gyökéren belül marad-e.

Korlátozza a tömörített méretet, a bejegyzésenkénti és teljes kicsomagolt méretet, a bejegyzések számát, a feldolgozási időt és a párhuzamos feladatokat. Használjon korlátozott jogosultságú ideiglenes tárhelyet, hiba után törölje a részeredményeket, és ne naplózzon jelszavakat, privát fájlnéveket vagy kicsomagolt tartalmat.

Gyakori kérdések XHTML-fájlok kicsomagolásarol

Hogyan csomagolhatok ki csak XHTML-fájlokat egy ZIP archívumból C#-ban?

Nyissa meg a ZIP-et az Archive osztállyal, járja be az Archive.Entriés gyűjteményt, szűrje a nem könyvtár típusú bejegyzéseket a(z) .xhtml kiterjesztés alapján, majd hívja meg az Extract metódust minden ellenőrzött kimeneti útvonalra.

Az Aspose.ZIP validálja a kinyert XHTML-fájl belső tartalmát?

Nem. Az Aspose.ZIP az archívumban tárolt fájlt állítja vissza. A tartalom olvasasa, validálása vagy konvertalása az adott formátumot ismerő specializált komponens feladata.

Ugyanez a kiválasztási minta működik 7Z, RAR vagy TAR konténerekkel is?

Az elv ugyanaz, de minden konténert a hozzá tartozó Aspose.ZIP archívumosztállyal kell megnyitni. A bejegyzéstipusok és az elérhető kicsomagolási műveletek formátumonként eltérhetnek.

Hogyan kezeljem az azonos nevű XHTML-fájlokat?

A kicsomagolás előtt döntse el a szabályt: utasítsa el a duplikátumokat, generáljon egyedi neveket, vagy őrizzen meg egy validált relatív mappastruktúrát.