Extrakce archivních souborů v C# a .NET
Rozbalujte ZIP a další archivní formáty programově v aplikacích .NET.
Extrakce archivů v .NET
Aspose.ZIP for .NET je managed knihovna pro otevírání archivů a rozbalování jejich obsahu v aplikacích C#. API umožňuje číst položky archivu, extrahovat vše nebo jen vybrané soubory, zachovat adresářovou strukturu a zapisovat výstup do složky nebo streamu. Zpracování zůstává uvnitř aplikace, takže serverové workflow nezávisí na desktopových programech ani nástrojích příkazové řádky.
Typické scénáře zahrnují příjem dokumentů, obnovu záloh, deployment balíčky, zpracování uploadů a automatizovanou výměnu dat. Stejné API lze použít v ASP.NET službách, background workerech, desktopových aplikacích, cloudových úlohách i CI/CD nástrojích. Aplikace řídí, které formáty a položky přijme a kam uloží výstup.
Konkrétní postup se liší podle formátu. ZIP, 7Z, RAR, TAR a CAB mají odlišnou strukturu kontejneru, kompresní metody i API třídy. Tato stránka popisuje společný princip; formátové návody pak doplňují přesnou třídu, volby a omezení.
Co je nástroj pro extrakci archivů?
Extractor archivů otevře kontejner s jedním nebo více soubory a obnoví uložený obsah do řízeného umístění. Proces obvykle čte metadata archivu, identifikuje soubory a složky, dekomprimuje data a zapíše výsledek do schváleného cíle. Šifrované archivy navíc vyžadují platné přihlašovací údaje a nastavení podporované daným formátem.
Pojmy extract, unpack a decompress se často používají zaměnitelně. Když vývojáři říkají, že potřebují unzip files, myslí tím rozbalení obsahu z kontejneru ZIP. Extrakce archivů je širší operace a zahrnuje také 7Z, RAR, TAR, CAB, CPIO nebo XZ.
V produkci nejde jen o jedno volání metody. Aplikace může potřebovat kontrolovat názvy položek, vybírat jednotlivé soubory, zachovat složky, přijímat streamy, pracovat s hesly, hlásit chyby a uplatnit limity dříve, než cokoli zapíše do trvalého úložiště.
Jak extrakce archivů funguje
Běžné workflow v C# má sedm kroků:
- Přijmout archiv z lokální cesty, uploadu, streamu nebo úložiště.
- Určit, zda aplikace daný formát podporuje.
- Otevřít kontejner třídou určenou pro tento formát.
- Prohlédnout položky archivu, pokud je potřeba filtrování.
- Ověřit výstupní cesty a limity zdrojů před zápisem.
- Extrahovat schválené položky do izolovaného cíle.
- Předat výstup do další fáze a odstranit dočasná data.
Třída pro otevření závisí na vstupu, protože ZIP, 7Z, RAR, TAR a CAB nesdílejí stejný interní model. Služba přesto může nabídnout jednotné aplikační workflow a každý kontejner směrovat na odpovídající API Aspose.ZIP.
Archivní formáty dostupné pro extrakci
Knihovna pracuje s běžnými archivními a kompresními formáty včetně ZIP, 7Z, RAR, TAR, GZIP, BZIP2, XZ, LZIP, Z, CPIO, CAB a WIM. Dostupné operace se liší: některé formáty obsahují více položek, jiné představují jeden komprimovaný stream nebo TAR zabalený další kompresní vrstvou.
Vyberte handler podle skutečného kontejneru, ne jen podle přípony. U každého formátu ověřte podporu požadované operace, šifrování a chování streamů dříve, než jej zařadíte do automatizované pipeline.
Běžná workflow extrakce
Rozbalení celého archivu. Úplnou extrakci použijte, když jsou potřeba všechny položky a vstup prošel validací. Zachovejte adresářovou hierarchii, pokud ji workflow vyžaduje, a pro každou úlohu použijte vlastní cíl.
Čtení pouze vybraných položek. Projděte Archive.Entries a aplikujte pravidla aplikace před zápisem dat. Hodí se to, když balíček obsahuje mnoho assetů, ale služba potřebuje jen dokument, manifest, konfiguraci nebo známou složku.
Zpracování streamu. Streamový vstup se hodí pro ASP.NET uploady, object storage, databáze a message-driven systémy. Udržujte jasné vlastnictví a životnost streamu a nebufferujte neomezený archiv celý v paměti.
Otevření chráněného obsahu. Předejte hesla přes dešifrovací nastavení dostupné pro daný formát. Hesla mají pocházet z chráněné konfigurace nebo secret store a nesmí se zapisovat do logů.
Velké vstupy jako omezené úlohy. Omezte komprimovanou velikost, velikost po rozbalení, počet položek, dobu zpracování a využití dočasného úložiště. Tyto limity definujte v aplikaci, ne podle důvěry v příponu.
Přidání Aspose.ZIP do projektu C#
Nainstalujte balíček Aspose.ZIP z NuGetu do projektu C# cíleného na podporované prostředí .NET ve Windows, Linuxu nebo macOS. Poté přidejte potřebný namespace a vyberte třídu odpovídající vstupnímu kontejneru. Proces vyžaduje také oprávnění ke čtení zdroje, zápisu do cíle a dostatek dočasného prostoru pro nastavený limit rozbalení.
Použijte následující příkaz Package Manager Console:
Package Manager Console
PM> Install-Package Aspose.Zip
Příklad C#: rozbalení souboru ZIP
ZIP stručně ukazuje společný princip. Kód otevře vstup a zapíše jeho obsah do cílové složky. Před použitím se soubory zvenčí ověřte kontejner, výstupní cesty a limity zdrojů.
Extrakce obsahu ZIP do adresáře
using Aspose.Zip;
using System.IO;
string archivePath = Path.GetFullPath("input.zip");
string outputDirectory = Path.GetFullPath("extracted");
Directory.CreateDirectory(outputDirectory);
using (var archive = new Archive(archivePath))
{
archive.ExtractToDirectory(outputDirectory);
}
Bezpečná extrakce archivů v produkci
Archivy od uživatelů nebo externích systémů považujte za nedůvěryhodný vstup. Očekávaná přípona není důkazem platného ani bezpečného kontejneru. Ověřte, že zvolený handler data skutečně zpracuje, a odmítněte poškozené nebo nepodporované vstupy.
Před zápisem položky vyhodnoťte její cílovou cestu proti schválenému adresáři. Odmítněte absolutní cesty, průchod do nadřazených adresářů a jakýkoli výsledek mimo tento kořen. Tím zabráníte tomu, aby názvy položek v archivu přesměrovaly zápis jinam.
Nastavte limity pro komprimovanou velikost, celkovou velikost po rozbalení, velikost jednotlivé položky, počet položek, hloubku zanoření, čas běhu a souběžnost. Používejte dočasnou složku pro konkrétní úlohu s omezenými oprávněními a po úspěchu i selhání uklízejte.
Logy mají obsahovat identifikátory operací a stav, nikoli hesla, soukromé názvy souborů nebo obsah extrahovaných dat.
Vyzkoušení extrakce v prohlížeči
Bezplatná webová aplikace pro extrakci umožňuje otestovat ukázkový vstup bez instalace softwaru. Hodí se pro kontrolu očekávaného výstupu před implementací workflow v C#.
Online nástroj řeší interaktivní úlohu. Knihovna .NET je určená pro opakovatelné služby, background processing, storage pipeline a podnikové aplikace, kde validace a zpracování výstupu zůstávají pod kontrolou aplikace.
Návody k extrakci pro jednotlivé typy souborů
Detaily implementace se liší podle kontejneru. Formátový návod by měl uvést:
- správnou třídu Aspose.ZIP pro otevření archivu;
- příklady úplné i selektivní extrakce;
- chování hesel a šifrování;
- streamové zpracování, pokud je relevantní;
- formátová omezení a produkční poznámky;
- odpovídající dokumentaci a API reference.
Při přechodu z tohoto přehledu k implementaci použijte návod pro skutečný vstupní typ. Vyhnete se tím aplikování předpokladů ZIP na 7Z, RAR, TAR, CAB nebo streamové kompresní formáty s odlišným chováním.
Zdroje k extrakci archivů
- Prozkoumat knihovnu pro archivy v .NET
- Číst dokumentaci pro vývojáře
- Procházet třídy a metody
- Prohlédnout příklady C# na GitHubu
- Nainstalovat balíček z NuGetu
FAQ k extrakci archivů
1. Jak extrahovat archivní soubory v C#?
Nainstalujte Aspose.ZIP, otevřete vstup třídou odpovídající jeho formátu a rozbalte celý kontejner nebo vybrané položky do schválené složky či streamu.
2. Jak extrahovat soubory z archivu ZIP?
Vytvořte instanci Archive pro ZIP vstup a zavolejte ExtractToDirectory pro rozbalení všeho. Pokud aplikace potřebuje kontrolovat jen vybrané položky, projděte Archive.Entries.
3. Je extrakce archivu totéž jako unzip?
Unzip se týká konkrétně souborů ZIP. Extrakce je širší operace a zahrnuje také 7Z, RAR, TAR, CAB, CPIO a WIM.
4. Mohou aplikace .NET otevřít archivy chráněné heslem?
Aspose.ZIP podporuje přístup s heslem u relevantních formátů, pokud jsou dodány platné údaje a odpovídající dešifrovací nastavení. Přesné chování závisí na typu kontejneru.
5. Jak bezpečně extrahovat nahrané archivy?
Použijte izolované dočasné úložiště, validujte každou výstupní cestu, omezte přijímané formáty, nastavte limity velikosti a času a po operaci odstraňte dočasná data.