Extraire des fichiers PPS depuis un ZIP dans .NET

Utilisez Aspose.ZIP for .NET pour ouvrir une archive ZIP, parcourir ses entrées et restaurer uniquement les fichiers PPS nécessaires à votre application C#. Dans ce contexte, extraire signifie sélectionner les éléments PPS stockés dans le conteneur puis les écrire dans une destination contrôlée; la bibliothèque d’archivage n’interprète pas et ne convertit pas leur contenu interne.

L’extraction sélective convient à la gestion de présentations, à la génération de slides, à la revue et à la conversion. L’application peut ignorer les fichiers sans rapport, contrôler les noms et les tailles, puis transmettre les éléments autorisés au composant métier suivant sans décompresser tout le package.

Comment extraire des fichiers PPS d'une archive ZIP avec C#

Installez le package Aspose.ZIP for .NET et référencez le namespace Aspose.Zip. Les métadonnées sont accessibles avant l’extraction : l’application peut donc contrôler ArchiveEntry.Name, ArchiveEntry.IsDirectory et ArchiveEntry.UncompressedSize avant d’écrire un fichier.


Package Manager Console Command

PM> Install-Package Aspose.Zip

Après l'installation, ouvrez le ZIP avec Archive, parcourez Archive.Entries, sélectionnez les entrées non répertoire correspondant à .pps, puis appelez ArchiveEntry.Extract pour chaque destination autorisée. Ne laissez jamais un chemin stocké dans l'archive choisir librement l'emplacement de sortie.

Étapes pour extraire des fichiers PPS en C#

  • Définissez le chemin du ZIP source et créez un répertoire de sortie isolé.
  • Ouvrez l’archive avec la classe Archive.
  • Parcourez Archive.Entries au lieu d’extraire immédiatement tout le package.
  • Ignorez les répertoires et retenez les entrées correspondant à .pps.
  • Construisez un chemin de destination qui reste sous la racine autorisée.
  • Refusez les entrées dépassant la limite de taille décompressée.
  • Enregistrez chaque entrée approuvée avec ArchiveEntry.Extract.

Prérequis système

Avant d’exécuter l’exemple, vérifiez que l’environnement comprend:

  • Une version de .NET prise en charge sous Windows, Linux ou macOS.
  • Visual Studio, JetBrains Rider, Visual Studio Code ou un autre environnement C#.
  • Aspose.ZIP for .NET installé via NuGet ou référencé comme assembly.
  • Un accès en lecture au ZIP source et un accès en écriture au répertoire cible.
  • Des limites définies pour la taille, la durée et le stockage temporaire.

Exemple C# : extraire des fichiers PPS sélectionnés depuis un ZIP

Le code ouvre un package ZIP, ignore les répertoires, filtre les entrées correspondant au format et écrit les fichiers retenus dans une destination contrôlée. En production, ajoutez une règle déterministe pour les doublons et plafonnez également la taille totale décompressée.

Extraire des fichiers PPS depuis un ZIP - C#

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

string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-pps");
string[] allowedExtensions = { ".pps" };
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);
    }
}

Notes de production pour les fichiers PPS

Le filtrage par extension identifie un fichier candidat, mais ne valide ni sa structure interne ni son intégrité. Avant de l’importer, l’afficher ou le convertir, contrôlez-le avec un composant de présentation. Définissez aussi une règle explicite pour les noms en double et limitez la taille totale après extraction.

Sécurité et confidentialité

Traitez le ZIP importé, les noms d’entrées et leur contenu comme des données non fiables. N’ajoutez pas directement ArchiveEntry.Name au répertoire de sortie : une entrée peut contenir un chemin absolu ou des segments remontant vers un dossier parent. Si vous conservez l’arborescence, résolvez le chemin final et vérifiez qu’il reste sous la racine autorisée.

Limitez la taille compressée, la taille après extraction, le nombre d’entrées, la durée d’exécution et la concurrence. Utilisez un stockage temporaire aux droits restreints, nettoyez les résultats après une erreur et n’inscrivez dans les logs ni mots de passe, ni noms privés, ni contenu extrait.

FAQ sur l'extraction de fichiers PPS

Comment extraire uniquement les fichiers PPS d’une archive ZIP en C# ?

Ouvrez le ZIP avec Archive, parcourez Archive.Entries, filtrez les entrées non répertoire selon .pps et appelez Extract pour chaque chemin de sortie validé.

Aspose.ZIP analyse-t-il le contenu du fichier PPS ?

Non. Aspose.ZIP restaure le fichier stocké dans l'archive. La lecture, la validation ou la conversion de son contenu relève du composant spécialisé pour ce format.

Le même principe fonctionne-t-il avec des archives 7Z, RAR ou TAR ?

Oui, mais chaque conteneur doit être ouvert avec la classe Aspose.ZIP correspondante. Les types d'entrées et les opérations disponibles peuvent varier selon le format.

Comment gérer plusieurs fichiers PPS portant le même nom ?

Définissez la règle avant l'extraction : refuser le doublon, générer un nom unique ou conserver une arborescence relative après validation de chaque chemin.