Extrahera arkivfiler i C# och .NET
Packa upp ZIP och andra arkivformat programmatiskt i .NET-applikationer.
Arkivextrahering i .NET
Aspose.ZIP for .NET är ett hanterat bibliotek för att öppna arkiv och extrahera deras innehåll i C#-applikationer. API:erna låter dig läsa arkivposter, extrahera allt eller bara valda objekt, bevara katalogstrukturen och skriva resultatet till en mapp eller stream. Bearbetningen stannar i applikationen, så serverflöden behöver inte bero på desktopprogram eller kommandoradsverktyg.
Vanliga användningsfall är dokumentintag, återställning av backup, distributionspaket, uppladdningshantering och automatiserat datautbyte. Samma API kan användas i ASP.NET-tjänster, bakgrundsjobb, desktopapplikationer, molnjobb och CI/CD-flöden.
Det exakta flödet varierar mellan format. ZIP, 7Z, RAR, TAR och CAB har olika containerstrukturer, komprimeringsmetoder och API-klasser. Den här översikten beskriver det gemensamma extraheringsflödet; formatsidorna anger rätt klass, alternativ och begränsningar.
Vad är en arkivextraherare?
En arkivextraherare öppnar en container som innehåller en eller flera filer och återställer det lagrade innehållet. Processen läser normalt metadata, identifierar poster och kataloger, dekomprimerar data och skriver resultatet till en godkänd plats. Krypterade arkiv kräver även giltiga uppgifter och inställningar som stöds av formatet.
Termerna extract, unpack och decompress används ofta för liknande åtgärder. Att packa upp ZIP betyder specifikt att hämta innehåll från en ZIP-container. Arkivextrahering är bredare och omfattar även 7Z, RAR, TAR, CAB, CPIO och XZ.
Så fungerar arkivextrahering
- Ta emot ett arkiv från lokal sökväg, uppladdning, stream eller lagringstjänst.
- Kontrollera att applikationen stöder formatet.
- Öppna containern med API-klassen för formatet.
- Inspektera poster när filtrering eller selektiv extrahering krävs.
- Validera utmatningsvägar och resursgränser innan filer skrivs.
- Extrahera godkända poster till en isolerad destination.
- Skicka utdata vidare och ta bort temporära data.
Arkivformat som kan extraheras
Biblioteket arbetar med vanliga arkiv- och komprimeringsformat, inklusive ZIP, 7Z, RAR, TAR, GZIP, BZIP2, XZ, LZIP, Z, CPIO, CAB och WIM. Tillgängliga åtgärder skiljer sig eftersom vissa format innehåller flera poster medan andra representerar en enda komprimerad stream eller en TAR-container med ett extra komprimeringslager.
Vanliga flöden för filextrahering
Packa upp hela arkivet. Använd full extrahering när alla poster behövs och indata redan har validerats. Bevara ursprunglig kataloghierarki vid behov och använd en unik destination för varje jobb.
Läs endast valda poster. Gå igenom Archive.Entries och tillämpa applikationsregler innan data skrivs. Det är användbart när paketet innehåller många resurser men flödet bara behöver ett dokument, manifest, konfigurationsfil eller känd mapp.
Bearbeta en stream. Streambaserad indata passar ASP.NET-uppladdningar, object storage, databaser och meddelandesystem. Gör ägarskap och livslängd tydliga och buffra inte ett obegränsat arkiv helt i minnet.
Öppna skyddat innehåll. Skicka uppgifter via dekrypteringsinställningarna för formatet. Lösenord bör komma från skyddad konfiguration eller secret store och aldrig skrivas i loggar.
Lägg till Aspose.ZIP i ett C#-projekt
Installera Aspose.ZIP NuGet-paketet i ett C#-projekt som riktar sig mot en stödd .NET-miljö på Windows, Linux eller macOS. Referera sedan rätt namespace och välj klassen som motsvarar indatacontainern.
Package Manager Console
PM> Install-Package Aspose.Zip
C#-exempel: packa upp en ZIP-fil
ZIP ger ett kort exempel på det gemensamma flödet. Koden öppnar indata och skriver innehållet till en målkatalog. Validera container, utmatningsvägar och resursgränser innan mönstret används med externa filer.
Extrahera ZIP-innehåll till en katalog
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);
}
Säker arkivextrahering i produktion
Behandla arkiv från användare eller externa system som opålitlig indata. En förväntad filändelse bevisar inte att containern är giltig eller säker. Lös upp utmatningsvägar mot den godkända destinationen och avvisa absoluta sökvägar, parent traversal och resultat utanför katalogen. Begränsa komprimerad storlek, extraherad storlek, antal poster, körningstid och parallellitet.
Testa extrahering i webbläsaren
Den kostnadsfria onlineappen för extrahering låter dig testa exempelindata utan att installera programvara. Det är praktiskt innan du implementerar flödet i C#.
Extraheringsguider per filtyp
Implementationsdetaljer beror på container och lagrat format. En formatspecifik guide bör ange rätt Aspose.ZIP-klass, exempel för fullständig och selektiv extrahering, lösenords- och krypteringsbeteende, streambearbetning, begränsningar och API-referenser.
Arkivextraheringsguider efter filformat
Se C#-sidor för filer och resurser som ofta lagras i ZIP-arkiv.
</div>
</div>
Resurser för arkivextrahering
FAQ om arkivextrahering
1. Hur extraherar jag arkivfiler i C#?
Installera Aspose.ZIP, öppna indata med klassen som matchar formatet och extrahera hela containern eller valda poster till en godkänd katalog eller stream.
2. Hur kan jag extrahera filer från ett ZIP-arkiv?
Skapa en Archive-instans för ZIP-indata och anropa ExtractToDirectory för allt innehåll. Gå igenom Archive.Entries när endast vissa objekt behövs.
3. Är arkivextrahering samma sak som att packa upp ZIP?
Att packa upp ZIP gäller specifikt ZIP-filer. Extrahering är bredare och omfattar även format som 7Z, RAR, TAR, CAB, CPIO och WIM.
4. Kan .NET-applikationer öppna lösenordsskyddade arkiv?
Aspose.ZIP stöder lösenordsbaserad åtkomst för relevanta format när giltiga uppgifter och matchande dekrypteringsinställningar anges.
5. Hur bör uppladdade arkiv extraheras säkert?
Använd isolerad temporär lagring, validera varje utmatningsväg, begränsa format och storlekar, sätt timeout och ta bort temporära data.