Extrahera MP3-innehåll från ZIP i .NET
Använd Aspose.ZIP for .NET för att öppna ett ZIP-arkiv, inspektera posterna och återställa endast de MP3-filer som C#-applikationen behöver. På den här sidan betyder extrahering att objekt med ändelsen .mp3 hittas i ZIP-containern och skrivs till en kontrollerad destination. Aspose.ZIP återställer filen som lagras i arkivet; det tolkar eller konverterar inte filens interna innehåll.
Selektiv extrahering är användbar för medieuppladdningar, innehållspaket, ljud- och videoarkiv och förberedelse för transkodning. Applikationen kan hoppa över irrelevanta poster, kontrollera namn och storlekar och skicka godkända filer vidare utan att packa upp hela paketet.
Så extraherar du MP3-filer från ZIP med C#
Installera
Aspose.ZIP for .NET-paketet
och referera till namespace Aspose.Zip. Arkivmetadata finns tillgängliga innan filer skrivs, så applikationen kan kontrollera ArchiveEntry.Name, ArchiveEntry.IsDirectory och ArchiveEntry.UncompressedSize innan mediefiler sparas.
Package Manager Console Command
PM> Install-Package Aspose.Zip
Efter installation öppnar du ZIP med Archive, går igenom Archive.Entries, väljer icke-katalogposter med ändelsen .mp3 och anropar ArchiveEntry.Extract för varje godkänd destination. Exemplet använder bara det slutliga filnamnet, så arkiverade sökvägar kan inte skriva utanför målmappen.
Steg för att extrahera MP3-filer i C#
- Ange sökvägen till käll-ZIP och skapa en isolerad utmatningskatalog.
- Öppna paketet med klassen
Archive. - Gå igenom
Archive.Entriesi stället för att extrahera hela paketet direkt. - Hoppa över kataloger och välj filnamn med ändelsen
.mp3. - Skapa en målsökväg som ligger kvar inom godkänd utmatningsrot.
- Avvisa poster som överskrider konfigurerad extraherad storlek.
- Spara varje godkänd post med
ArchiveEntry.Extract.
Systemkrav
- En stödd .NET-runtime på Windows, Linux eller macOS.
- Visual Studio, JetBrains Rider, Visual Studio Code eller annan C#-utvecklingsmiljö.
- Aspose.ZIP for .NET installerat via NuGet eller refererat som assembly.
- Läsåtkomst till käll-ZIP och skrivåtkomst till målkatalogen.
- Tydliga gränser för storlek, körtid och temporär lagring för opålitliga arkiv.
C#-exempel: extrahera valda MP3-filer från ZIP
Koden öppnar ett ZIP-paket, hoppar över kataloger, filtrerar poster efter tillåten ändelse och skriver matchande filer till en enda utmatningskatalog. Genom att släppa arkiverade sökvägar kan överordnade katalogsegment inte styra destinationen. Produktionskod bör även definiera en deterministisk regel för dubbla filnamn.
Extrahera MP3-filer från 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(
$"Posten '{fileName}' överskrider extraheringsgränsen på 100 MB.");
}
string destinationPath = Path.Combine(outputDirectory, fileName);
entry.Extract(destinationPath);
}
}
Implementationsnoteringar för MP3-filer
Filtrering på ändelse identifierar bara kandidatfiler; det bevisar inte att innehållet är giltigt eller säkert. Codec, längd, bitrate och uppspelningsbarhet bör valideras med en mediekomponent före publicering eller konvertering.
Exemplet plattar avsiktligt ut arkiverade sökvägar. Om två godkända poster har samma slutliga filnamn kan ArchiveEntry.Extract skriva över en befintlig fil. Definiera policyn före extrahering: avvisa dubbletter, skapa unika namn eller bevara en validerad relativ mappstruktur.
Säkerhet och integritet
Behandla uppladdade ZIP-filer, postnamn och innehåll som opålitlig indata. Kombinera inte ArchiveEntry.Name direkt med utmatningskatalogen, eftersom en post kan innehålla absoluta sökvägar eller segment till överordnade kataloger. Exemplet använder Path.GetFileName; om mappar ska bevaras, lös den slutliga sökvägen och kontrollera att den ligger inom godkänd rot.
Begränsa komprimerad storlek, extraherad storlek per post och totalt, antal poster, bearbetningstid och parallella jobb. Använd temporär lagring med begränsade rättigheter, ta bort partiella resultat efter fel och logga inte lösenord, privata filnamn eller extraherat innehåll.
FAQ om extrahering av MP3-filer
Hur extraherar jag bara MP3-filer från ett ZIP-arkiv i C#?
Öppna ZIP med Archive, gå igenom Archive.Entries, filtrera icke-katalogposter på ändelsen .mp3 och anropa Extract för varje validerad utmatningsväg.
Validerar Aspose.ZIP det interna innehållet i den extraherade MP3-filen?
Nej. Aspose.ZIP återställer filen som lagras i arkivet. Läsning, validering eller konvertering hör till en komponent som stöder formatet.
Kan samma urvalsmönster användas med 7Z-, RAR- eller TAR-containrar?
Principen är densamma, men varje container måste öppnas med motsvarande Aspose.ZIP-arkivklass. Posttyper och extraheringsåtgärder kan skilja sig mellan format.
Hur bör dubbla MP3-filnamn hanteras?
Bestäm regeln före extrahering: avvisa dubbletter, skapa unika namn eller bevara en validerad relativ mappstruktur.
Relaterade medieguider
Se C#-sidor för ljud- och videoformat som ofta lagras i arkiv.