Wyodrębnianie plików archiwum w C# i .NET
Programowo rozpakowuj ZIP i inne formaty archiwów w aplikacjach .NET.
Wyodrębnianie archiwów w .NET
Aspose.ZIP for .NET to zarządzana biblioteka do otwierania archiwów i wyodrębniania ich zawartości w aplikacjach C#. API pozwala odczytywać wpisy archiwum, wypakować wszystkie elementy albo tylko wybrane pliki, zachować strukturę katalogów oraz zapisać wynik do folderu lub strumienia. Przetwarzanie pozostaje po stronie aplikacji, więc workflow serwerowe nie zależą od narzędzi desktopowych ani poleceń systemowych.
Typowe zastosowania obejmują przyjmowanie dokumentów, odtwarzanie kopii zapasowych, obsługę pakietów wdrożeniowych, przetwarzanie uploadów i automatyczną wymianę danych. Ta sama biblioteka sprawdza się w usługach ASP.NET, procesach w tle, aplikacjach desktopowych, zadaniach chmurowych i pipeline’ach CI/CD.
Dokładny workflow zależy od formatu. ZIP, 7Z, RAR, TAR i CAB mają różne struktury kontenera, metody kompresji i klasy API. Ta strona opisuje wspólny proces wyodrębniania, a strony formatów podają właściwe klasy, opcje i ograniczenia.
Czym jest ekstraktor archiwów?
Ekstraktor archiwów otwiera kontener zawierający jeden lub więcej plików i przywraca zapisaną zawartość. Zwykle odczytuje metadane, identyfikuje wpisy i katalogi, dekompresuje dane oraz zapisuje wynik w zatwierdzonej lokalizacji. Archiwa szyfrowane wymagają też poprawnych poświadczeń i ustawień obsługiwanych przez dany format.
Terminy extract, unpack i decompress bywają używane zamiennie. Rozpakowanie ZIP oznacza konkretnie odzyskanie zawartości z kontenera ZIP. Wyodrębnianie archiwów jest pojęciem szerszym i obejmuje także formaty takie jak 7Z, RAR, TAR, CAB, CPIO czy XZ.
W środowisku produkcyjnym ekstrakcja to więcej niż jedno wywołanie metody. Aplikacja może musieć sprawdzić nazwy wpisów, wybrać konkretne elementy, zachować foldery, obsłużyć strumienie, hasła, błędy i limity przed zapisem do trwałego magazynu.
Jak działa wyodrębnianie archiwów
- Odbierz archiwum ze ścieżki lokalnej, uploadu, strumienia albo usługi storage.
- Sprawdź, czy aplikacja obsługuje dany format.
- Otwórz kontener klasą API przeznaczoną dla tego formatu.
- Przejrzyj wpisy, jeśli potrzebne jest filtrowanie lub selektywne wyodrębnianie.
- Zweryfikuj ścieżki wyjściowe i limity zasobów przed zapisem plików.
- Wyodrębnij zatwierdzone wpisy do izolowanego miejsca docelowego.
- Przekaż wynik do kolejnego etapu aplikacji i usuń dane tymczasowe.
Formaty archiwów dostępne do wyodrębniania
Biblioteka obsługuje popularne formaty archiwów i kompresji, w tym ZIP, 7Z, RAR, TAR, GZIP, BZIP2, XZ, LZIP, Z, CPIO, CAB i WIM. Dostępne operacje różnią się, ponieważ część formatów zawiera wiele wpisów, a inne reprezentują pojedynczy skompresowany strumień albo kontener TAR opakowany dodatkową warstwą kompresji.
Typowe workflow wyodrębniania plików
Rozpakowanie całego archiwum. Użyj pełnej ekstrakcji, gdy potrzebne są wszystkie wpisy, a wejście zostało już zweryfikowane. Zachowaj oryginalną hierarchię katalogów, jeśli jest wymagana, i przypisz unikalne miejsce docelowe dla każdego zadania.
Odczyt tylko wybranych wpisów. Przejrzyj Archive.Entries i zastosuj reguły aplikacji przed zapisem danych. To przydatne, gdy pakiet zawiera wiele zasobów, ale workflow potrzebuje tylko dokumentu, manifestu, konfiguracji albo znanego folderu.
Przetwarzanie strumienia. Wejście strumieniowe pasuje do uploadów ASP.NET, object storage, baz danych i systemów wiadomości. Jawnie określ własność oraz czas życia strumienia i nie buforuj w pamięci nieograniczonego archiwum.
Otwieranie zawartości chronionej. Przekaż poświadczenia przez ustawienia deszyfrowania właściwe dla formatu. Hasła powinny pochodzić z chronionej konfiguracji lub magazynu sekretów i nigdy nie trafiać do logów.
Duże wejścia jako ograniczone zadania. Limituj rozmiar skompresowany, rozmiar po rozpakowaniu, liczbę wpisów, czas przetwarzania i użycie magazynu tymczasowego.
Dodawanie Aspose.ZIP do projektu C#
Zainstaluj pakiet NuGet Aspose.ZIP w projekcie C# kierowanym na obsługiwane środowisko .NET w Windows, Linux albo macOS. Następnie użyj wymaganego namespace i wybierz klasę odpowiadającą kontenerowi wejściowemu.
Package Manager Console
PM> Install-Package Aspose.Zip
Przykład C#: rozpakowanie pliku ZIP
ZIP pokazuje zwięzły przykład wspólnego workflow. Kod otwiera wejście i zapisuje jego zawartość do katalogu docelowego. Przed użyciem tego wzorca dla plików zewnętrznych zweryfikuj kontener, ścieżki wyjściowe i limity zasobów.
Wyodrębnianie zawartości ZIP do katalogu
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);
}
Bezpieczne wyodrębnianie archiwów w produkcji
Archiwa otrzymywane od użytkowników lub systemów zewnętrznych traktuj jako niezaufane wejście. Oczekiwane rozszerzenie nie dowodzi, że kontener jest poprawny albo bezpieczny. Sprawdź, czy wybrany handler potrafi odczytać dane, i odrzuć uszkodzone lub nieobsługiwane wejście.
Przed zapisem wpisu rozwiąż jego ścieżkę względem zatwierdzonego miejsca docelowego. Odrzuć ścieżki bezwzględne, przejścia do katalogów nadrzędnych i każdy wynik poza katalogiem docelowym.
Ustaw limity rozmiaru skompresowanego, całkowitego i jednostkowego rozmiaru po rozpakowaniu, liczby wpisów, głębokości zagnieżdżenia, czasu wykonania i równoległości. Używaj tymczasowego folderu dla zadania z ograniczonymi uprawnieniami i sprzątaj po powodzeniu oraz błędzie.
Test ekstrakcji w przeglądarce
Bezpłatna aplikacja online do ekstrakcji pozwala przetestować przykładowe dane bez instalowania oprogramowania. Przydaje się do sprawdzenia oczekiwanego wyniku przed implementacją workflow w C#.
Przewodniki ekstrakcji dla typów plików
Szczegóły implementacji zależą od kontenera i zapisanego formatu. Przewodnik formatu powinien wskazywać właściwą klasę Aspose.ZIP, przykłady pełnej i selektywnej ekstrakcji, zachowanie haseł i szyfrowania, przetwarzanie strumieniowe, ograniczenia oraz odnośniki do API.
Przewodniki Wyodrębniania Archiwów według Formatu Pliku
Przeglądaj strony C# dla plików i zasobów często przechowywanych w archiwach ZIP.
</div>
</div>
Zasoby dotyczące wyodrębniania archiwów
FAQ wyodrębniania archiwów
1. Jak wyodrębnić pliki archiwum w C#?
Zainstaluj Aspose.ZIP, otwórz wejście klasą dopasowaną do formatu i wyodrębnij cały kontener lub wybrane wpisy do zatwierdzonego katalogu albo strumienia.
2. Jak wyodrębnić pliki z archiwum ZIP?
Utwórz instancję Archive dla wejścia ZIP i wywołaj ExtractToDirectory, aby rozpakować całość. Gdy potrzebne są tylko wybrane elementy, przejdź po Archive.Entries.
3. Czy wyodrębnianie archiwum jest tym samym co rozpakowanie ZIP?
Rozpakowanie ZIP dotyczy konkretnie plików ZIP. Wyodrębnianie jest pojęciem szerszym i obejmuje też formaty takie jak 7Z, RAR, TAR, CAB, CPIO i WIM.
4. Czy aplikacje .NET mogą otwierać archiwa chronione hasłem?
Aspose.ZIP obsługuje dostęp hasłem dla odpowiednich formatów, gdy podano poprawne poświadczenia i zgodne ustawienia deszyfrowania.
5. Jak bezpiecznie wyodrębniać archiwa przesłane przez użytkowników?
Używaj izolowanego magazynu tymczasowego, waliduj każdą ścieżkę wyjściową, ogranicz akceptowane formaty i rozmiary, ustaw limit czasu przetwarzania i usuwaj dane tymczasowe.