Extraire des fichiers MP3 depuis un ZIP dans .NET
Utilisez Aspose.ZIP for .NET pour ouvrir une archive ZIP, parcourir ses entrées et restaurer uniquement les fichiers MP3 nécessaires à votre application C#. Dans ce contexte, extraire signifie sélectionner les éléments MP3 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 à l’ingestion média, à la transcription, aux catalogues audio et au transcodage. 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 MP3 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 à .mp3, 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 MP3 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 à .mp3.
- 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 MP3 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 MP3 depuis un ZIP - C#
using Aspose.Zip;
using System;
using System.IO;
string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-mp3");
string[] allowedExtensions = { ".mp3" };
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 MP3
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 analyseur audio. 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 MP3
Comment extraire uniquement les fichiers MP3 d’une archive ZIP en C# ?
Ouvrez le ZIP avec Archive, parcourez Archive.Entries, filtrez les entrées non répertoire selon .mp3 et appelez Extract pour chaque chemin de sortie validé.
Aspose.ZIP analyse-t-il le contenu du fichier MP3 ?
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 MP3 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.
Guides d'extraction associés : fichiers audio
Consultez d'autres pages C# consacrées à l'extraction de formats proches stockés dans des archives.