Estrarre contenuto PPTX da ZIP in .NET

Usa Aspose.ZIP for .NET per aprire un archivio ZIP, ispezionarne le voci e ripristinare solo file PPTX necessari alla tua applicazione C#. In questa pagina, estrarre significa individuare gli elementi con estensione .pptx dentro il contenitore ZIP e salvarli in una destinazione controllata. Aspose.ZIP ripristina il file memorizzato nell’archivio; non interpreta né converte il contenuto interno del file.

L’estrazione selettiva è utile per pacchetti di documenti d’ufficio, report aziendali, presentazioni e caricamenti enterprise. L’applicazione può ignorare le voci non pertinenti, verificare nomi e dimensioni, quindi passare i file approvati al componente successivo senza decomprimere l’intero pacchetto.

Come estrarre file PPTX da ZIP con C#

Installa il pacchetto Aspose.ZIP for .NET e importa il namespace Aspose.Zip. I metadati dell’archivio sono disponibili prima della scrittura, quindi l’applicazione può controllare ArchiveEntry.Name, ArchiveEntry.IsDirectory e ArchiveEntry.UncompressedSize prima di salvare file Office.


Package Manager Console Command

PM> Install-Package Aspose.Zip

Dopo l'installazione, apri lo ZIP con Archive, scorri Archive.Entries, seleziona le voci non directory con estensione .pptx e chiama ArchiveEntry.Extract per ogni destinazione approvata. L'esempio usa solo il nome file finale, quindi i percorsi archiviati non possono scrivere fuori dalla cartella di destinazione.

Passaggi per estrarre file PPTX in C#

  • Definisci il percorso dello ZIP sorgente e crea una directory di output isolata.
  • Apri il pacchetto con la classe Archive.
  • Scorri Archive.Entries invece di estrarre subito l’intero pacchetto.
  • Ignora le directory e seleziona i nomi file con estensione .pptx.
  • Crea un percorso di destinazione che resti dentro la root di output approvata.
  • Rifiuta le voci che superano il limite configurato per la dimensione estratta.
  • Salva ogni voce approvata con ArchiveEntry.Extract.

Requisiti di Sistema

Prima di eseguire l’esempio, verifica che l’ambiente includa:

  • Un runtime .NET supportato su Windows, Linux o macOS.
  • Visual Studio, JetBrains Rider, Visual Studio Code o un altro ambiente di sviluppo C#.
  • Aspose.ZIP for .NET installato tramite NuGet o referenziato come assembly.
  • Accesso in lettura allo ZIP sorgente e accesso in scrittura alla directory di destinazione.
  • Limiti chiari per dimensioni, tempo di esecuzione e spazio temporaneo con archivi non attendibili.

Esempio C#: estrarre file PPTX selezionati da ZIP

Il codice apre un pacchetto ZIP, ignora le directory, filtra le voci in base all’estensione consentita e scrive i file corrispondenti in una sola directory di output. Scartare i percorsi archiviati evita che segmenti di directory padre controllino la destinazione. In produzione va definita anche una regola deterministica per i nomi duplicati.

Estrarre file PPTX da ZIP - C#

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

string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-pptx");
string[] allowedExtensions = { ".pptx" };
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(
                $"La voce '{fileName}' supera il limite di estrazione di 100 MB.");
        }

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

Note di implementazione per file PPTX

Il filtro per estensione identifica solo file candidati; non dimostra che il contenuto sia valido o sicuro. Macro, formule, oggetti incorporati, collegamenti esterni e struttura del documento vanno verificati con un componente Office.

L’esempio appiattisce intenzionalmente i percorsi archiviati. Se due voci accettate hanno lo stesso nome file finale, ArchiveEntry.Extract può sovrascrivere un file esistente. Definisci la policy prima dell’estrazione: rifiutare i duplicati, generare nomi univoci oppure conservare una struttura relativa già validata. Usa una destinazione separata per ogni job per evitare che richieste parallele mescolino i risultati.

Sicurezza e privacy

Tratta lo ZIP caricato, i nomi delle voci e il contenuto come input non attendibili. Non combinare direttamente ArchiveEntry.Name con la directory di output: una voce può contenere percorsi assoluti o segmenti che risalgono a directory padre. L’esempio usa Path.GetFileName; se devi conservare le cartelle, risolvi il percorso finale e verifica che rimanga dentro la root approvata.

Limita dimensione compressa, dimensione estratta per voce e totale, numero di voci, tempo di elaborazione e job paralleli. Usa spazio temporaneo con permessi limitati, rimuovi output parziali dopo un errore ed evita di registrare password, nomi file privati o contenuto estratto.

FAQ sull'estrazione di file PPTX

Come estraggo solo file PPTX da un archivio ZIP in C#?

Apri lo ZIP con Archive, scorri Archive.Entries, filtra le voci non directory in base all'estensione .pptx e chiama Extract per ogni percorso di output validato.

Aspose.ZIP convalida il contenuto interno del file PPTX?

No. Aspose.ZIP ripristina il file memorizzato nell'archivio. Lettura, validazione o conversione del contenuto spettano a un componente specializzato per quel formato.

Lo stesso modello di selezione funziona con contenitori 7Z, RAR o TAR?

Il concetto è lo stesso, ma ogni contenitore deve essere aperto con la classe Aspose.ZIP corrispondente. Tipi di voce e operazioni disponibili possono variare in base al formato.

Come gestire nomi file PPTX duplicati?

Definisci la regola prima dell'estrazione: rifiutare duplicati, generare nomi univoci o conservare una struttura di cartelle relativa e validata.