Wyodrębnianie zawartości ODS z ZIP w .NET
Użyj Aspose.ZIP for .NET, aby otworzyć archiwum ZIP, sprawdzić jego wpisy i przywrócić tylko pliki ODS, których potrzebuje aplikacja C#. Na tej stronie ekstrakcja oznacza odnalezienie elementów z rozszerzeniem .ods w kontenerze ZIP i zapisanie ich w kontrolowanej lokalizacji. Aspose.ZIP przywraca plik zapisany w archiwum; nie interpretuje ani nie konwertuje jego wewnętrznej zawartości.
Selektywne wyodrębnianie jest przydatne w scenariuszach takich jak pakiety dokumentów biurowych, raporty biznesowe, prezentacje i uploady firmowe. Aplikacja może pominąć niepowiązane wpisy, sprawdzić nazwy i rozmiary oraz przekazać zatwierdzone pliki do kolejnego etapu bez rozpakowywania całego pakietu.
Jak wyodrębnić pliki ODS z ZIP w C#
Zainstaluj
pakiet Aspose.ZIP for .NET
i odwołaj się do namespace Aspose.Zip. Metadane archiwum są dostępne przed zapisem, więc aplikacja może sprawdzić ArchiveEntry.Name, ArchiveEntry.IsDirectory i ArchiveEntry.UncompressedSize przed zapisaniem pliki Office.
Package Manager Console Command
PM> Install-Package Aspose.Zip
Po instalacji otwórz ZIP klasą Archive, przejdź po Archive.Entries, wybierz wpisy niebędące katalogami z rozszerzeniem .ods i wywołaj ArchiveEntry.Extract dla każdej zatwierdzonej lokalizacji. Przykład używa tylko końcowej nazwy pliku, dzięki czemu ścieżki z archiwum nie mogą zapisywać poza folderem docelowym.
Kroki wyodrębniania plików ODS w C#
- Zdefiniuj ścieżkę źródłowego ZIP i utwórz izolowany katalog wyjściowy.
- Otwórz pakiet klasą
Archive. - Przejdź po
Archive.Entrieszamiast od razu rozpakowywać cały pakiet. - Pomiń katalogi i wybierz nazwy plików z rozszerzeniem
.ods. - Zbuduj ścieżkę docelową pozostającą w zatwierdzonym katalogu głównym.
- Odrzuć wpisy przekraczające skonfigurowany limit rozmiaru po rozpakowaniu.
- Zapisz każdy zatwierdzony wpis przez
ArchiveEntry.Extract.
Wymagania systemowe
- A supported .NET runtime on Windows, Linux, or macOS.
- Visual Studio, JetBrains Rider, Visual Studio Code, or another C# development environment.
- Aspose.ZIP for .NET installed through NuGet or referenced as an assembly.
- Read access to the source ZIP and write access to the destination directory.
- Clear size, execution-time, and temporary-storage limits for untrusted archives.
Przykład C#: wyodrębnianie wybranych plików ODS z ZIP
Kod otwiera pakiet ZIP, pomija katalogi, filtruje wpisy według dozwolonego rozszerzenia i zapisuje pasujące pliki w jednym katalogu wyjściowym. Spłaszczenie ścieżek archiwum zapobiega kontrolowaniu lokalizacji docelowej przez segmenty katalogów nadrzędnych. W kodzie produkcyjnym zdefiniuj także deterministyczną regułę dla duplikatów nazw.
Wyodrębnianie plików ODS z ZIP - C#
using Aspose.Zip;
using System;
using System.IO;
string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-ods");
string[] allowedExtensions = { ".ods" };
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}' exceeds the 100 MB extraction limit.");
}
string destinationPath = Path.Combine(outputDirectory, fileName);
entry.Extract(destinationPath);
}
}
Uwagi implementacyjne dla plików ODS
Filtrowanie po rozszerzeniu identyfikuje tylko kandydatów; nie dowodzi, że zawartość jest poprawna lub bezpieczna. Makra, formuły, obiekty osadzone, linki zewnętrzne i strukturę dokumentu sprawdź komponentem Office.
The example intentionally flattens archived paths. If two approved entries have the same final file name, ArchiveEntry.Extract can overwrite an existing file. Define a policy before extraction: reject duplicates, generate unique names, or preserve a validated relative folder structure.
Bezpieczeństwo i prywatność
Traktuj przesłane ZIP, nazwy wpisów i zawartość jako niezaufane wejście. Nie łącz ArchiveEntry.Name bezpośrednio z katalogiem wyjściowym, ponieważ wpis może zawierać ścieżkę bezwzględną albo segmenty przechodzące do katalogu nadrzędnego. Przykład używa Path.GetFileName; jeśli trzeba zachować foldery, rozwiąż końcową ścieżkę i sprawdź, czy pozostaje w zatwierdzonym katalogu głównym.
Ogranicz rozmiar skompresowany, rozmiar po rozpakowaniu per wpis i łącznie, liczbę wpisów, czas przetwarzania oraz zadania równoległe. Używaj tymczasowego magazynu z ograniczonymi uprawnieniami, usuwaj wyniki częściowe po błędzie i nie loguj haseł, prywatnych nazw plików ani wyodrębnionej zawartości.
FAQ wyodrębniania plików ODS
Jak wyodrębnić tylko pliki ODS z archiwum ZIP w C#?
Otwórz ZIP klasą Archive, przejdź po Archive.Entries, przefiltruj wpisy niebędące katalogami według rozszerzenia .ods i wywołaj Extract dla każdej zweryfikowanej ścieżki wyjściowej.
Czy Aspose.ZIP waliduje wewnętrzną zawartość wyodrębnionego pliku ODS?
Nie. Aspose.ZIP przywraca plik zapisany w archiwum. Odczyt, walidacja lub konwersja zawartości należy do komponentu obsługującego dany format.
Czy ten sam wzorzec wyboru działa z kontenerami 7Z, RAR lub TAR?
Koncepcja jest taka sama, ale każdy kontener trzeba otworzyć odpowiednią klasą archiwum Aspose.ZIP. Typy wpisów i obsługiwane operacje mogą różnić się między formatami.
Jak obsłużyć zduplikowane nazwy plików ODS?
Ustal regułę przed ekstrakcją: odrzucanie duplikatów, generowanie unikalnych nazw albo zachowanie zweryfikowanej względnej struktury folderów.
Powiązane Przewodniki Wyodrębniania Office
Przeglądaj strony C# dla arkuszy, prezentacji i notatek w ZIP.