Estrarre File di Archivio in C# e .NET
Decomprimi ZIP e altri formati di archivio via codice nelle applicazioni .NET.
Estrazione di file di archivio in .NET
Aspose.ZIP for .NET è una libreria gestita per aprire archivi ed estrarne il contenuto nelle applicazioni C#. Le API permettono di leggere le voci dell’archivio, estrarre tutti gli elementi o solo una selezione, mantenere la struttura delle directory e scrivere l’output in una cartella o in uno stream. L’elaborazione resta dentro l’applicazione, quindi i workflow server-side non dipendono da software desktop o utility da riga di comando.
I casi d’uso tipici includono ingestione documentale, ripristino di backup, pacchetti di distribuzione, elaborazione di upload e scambio dati automatizzato. La stessa API può essere usata in servizi ASP.NET, worker in background, applicazioni desktop, job cloud e pipeline CI/CD.
Il workflow varia in base al formato. ZIP, 7Z, RAR, TAR e CAB usano strutture di contenitore, metodi di compressione e classi API differenti. Questa panoramica descrive il processo comune; le guide specifiche per formato indicano poi la classe, le opzioni e i limiti corretti per ogni tipo di archivio.
Che cos'è un estrattore di archivi?
Un estrattore di archivi apre un contenitore che memorizza uno o più file e ripristina il contenuto salvato. In genere legge i metadati, identifica voci e directory, decomprime i dati e scrive il risultato in una posizione approvata. Gli archivi cifrati richiedono anche credenziali valide e impostazioni supportate dal formato.
I termini extract, unpack e decompress vengono spesso usati per operazioni simili. Quando uno sviluppatore parla di decomprimere ZIP, intende recuperare il contenuto da un contenitore ZIP. L’estrazione di archivi è un’operazione più ampia e copre anche formati come 7Z, RAR, TAR, CAB, CPIO e XZ.
In produzione, l’estrazione non è solo una chiamata di metodo. Un’applicazione può dover controllare i nomi delle voci, selezionare singoli elementi, conservare cartelle, accettare stream, gestire password, segnalare errori e applicare limiti prima di scrivere su storage permanente.
Come funziona l'estrazione degli archivi
Un workflow C# tipico include sette fasi:
- Ricevere un archivio da percorso locale, upload, stream o servizio di storage.
- Verificare che il formato sia supportato dall’applicazione.
- Aprire il contenitore con la classe API progettata per quel formato.
- Ispezionare le voci quando servono filtri o estrazione selettiva.
- Validare percorsi di output e limiti di risorse prima di scrivere file.
- Estrarre le voci approvate in una destinazione isolata.
- Passare l’output alla fase successiva e rimuovere i dati temporanei.
La classe di apertura dipende dal tipo di input, perché ZIP, 7Z, RAR, TAR e CAB non condividono lo stesso modello interno. Un servizio può comunque offrire un workflow applicativo unico, instradando ogni contenitore verso l’API Aspose.ZIP corrispondente.
Formati di archivio disponibili per l'estrazione
La libreria lavora con formati di archivio e compressione diffusi, tra cui ZIP, 7Z, RAR, TAR, GZIP, BZIP2, XZ, LZIP, Z, CPIO, CAB e WIM. Le operazioni disponibili variano: alcuni formati contengono molte voci, altri rappresentano un singolo stream compresso o un contenitore TAR avvolto da un ulteriore livello di compressione.
Scegli il gestore adatto al contenitore reale, non solo all’estensione del nome file. Per ogni formato, verifica che operazione, metodo di cifratura e comportamento su stream siano supportati prima di inserirlo in una pipeline automatica.
Workflow comuni di estrazione file
Decomprimere l’intero archivio. Usa l’estrazione completa quando servono tutte le voci e l’input ha superato la validazione. Conserva la gerarchia originale quando necessario e assegna una destinazione unica a ogni job per evitare sovrascritture o output mescolati.
Leggere solo voci selezionate. Scorri Archive.Entries e applica le regole dell’applicazione prima di scrivere dati. È utile quando un pacchetto contiene molti asset ma il processo richiede solo un documento, un manifest, un file di configurazione o una cartella nota.
Elaborare uno stream. L’input basato su stream si adatta a upload ASP.NET, object storage, database e sistemi a messaggi. Rendi espliciti proprietà e ciclo di vita dello stream ed evita di caricare in memoria archivi senza limiti.
Aprire contenuti protetti. Fornisci le credenziali tramite le impostazioni di decrittazione disponibili per il formato. Le password devono provenire da configurazione protetta o secret store e non devono mai finire nei log.
Gestire input grandi come job limitati. Limita dimensione compressa, dimensione estratta, numero di voci, tempo di elaborazione e uso dello storage temporaneo. Definisci questi limiti nell’applicazione invece di dedurre fiducia dall’estensione.
Aggiungere Aspose.ZIP a un progetto C#
Installa il pacchetto NuGet Aspose.ZIP in un progetto C# destinato a un ambiente .NET supportato su Windows, Linux o macOS. Poi importa il namespace necessario e seleziona la classe corrispondente al contenitore di input. Il processo richiede anche accesso in lettura alla sorgente, accesso in scrittura alla destinazione e spazio temporaneo sufficiente per il limite di espansione configurato.
Usa il seguente comando nella Package Manager Console:
Package Manager Console
PM> Install-Package Aspose.Zip
Esempio C#: decomprimere un file ZIP
ZIP offre un esempio conciso del workflow comune. Il codice apre l’input e scrive il contenuto in una directory di destinazione. Prima di usare questo modello con file esterni, valida contenitore, percorsi di output e limiti di risorse.
Estrarre il contenuto ZIP in una directory
using Aspose.Zip;
using System.IO;
string archivePath = Path.GetFullPath("input.zip");
string outputDirectory = Path.GetFullPath("extracted");
Directory.CreateDirectory(outputDirectory);
using (var archive = new Archive(archivePath))
{
archive.ExtractToDirectory(outputDirectory);
}
Estrazione sicura degli archivi in produzione
Tratta gli archivi ricevuti da utenti o sistemi esterni come input non attendibili. Un’estensione attesa non prova che il contenitore sia valido o sicuro. Verifica che il gestore scelto possa interpretare i dati e rifiuta input danneggiati o non supportati.
Prima di scrivere una voce, risolvi il suo percorso rispetto alla destinazione approvata. Rifiuta percorsi assoluti, traversal verso directory padre e qualsiasi risultato fuori da quella directory. Così i nomi archiviati non possono reindirizzare la scrittura in altre posizioni del filesystem.
Imposta limiti per dimensione compressa, dimensione estratta totale e per voce, numero di voci, profondità di annidamento, tempo di esecuzione e concorrenza. Usa una cartella temporanea specifica per job con permessi limitati, promuovi solo output validato e pulisci dopo operazioni riuscite o fallite.
I log dovrebbero contenere identificatori di operazione e stato, non password, nomi file privati o contenuto estratto. Se l’output viene poi analizzato, visualizzato in anteprima o scansionato, considera ogni componente successivo come un confine di fiducia separato.
Provare l'estrazione nel browser
L’ app gratuita di estrazione online permette di testare input di esempio senza installare software. È utile per controllare l’output atteso prima di implementare il workflow in C#.
Lo strumento online è pensato per attività interattive. La libreria .NET è destinata a servizi ripetibili, elaborazione in background, pipeline di storage e applicazioni enterprise in cui validazione e gestione dell’output devono restare sotto controllo applicativo.
Guide di estrazione per singoli tipi di file
I dettagli implementativi cambiano in base al contenitore e al formato memorizzato. Una guida specifica dovrebbe indicare:
- la classe Aspose.ZIP corretta per aprire l’archivio;
- esempi di estrazione completa e selettiva;
- comportamento di password e cifratura;
- elaborazione basata su stream quando applicabile;
- vincoli del formato e considerazioni di produzione;
- riferimenti ad API e documentazione.
Usa la guida del tipo di input reale quando passi dalla panoramica all’implementazione. In questo modo eviti di applicare assunzioni proprie di ZIP a 7Z, RAR, TAR, CAB o formati di compressione stream con comportamento diverso.
Guide di Estrazione per Formato File
Consulta le pagine C# per file e asset spesso archiviati dentro pacchetti ZIP.
</div>
</div>
Risorse per l'estrazione di archivi
- Esplora la libreria di archivi .NET
- Leggi la documentazione per sviluppatori
- Consulta classi e metodi
- Rivedi esempi C# su GitHub
- Installa il pacchetto da NuGet
FAQ sull'estrazione di archivi
1. Come estrarre file di archivio in C#?
Installa Aspose.ZIP, apri l’input con la classe corrispondente al formato ed estrai l’intero contenitore o voci selezionate in una directory o stream approvato.
2. Come posso estrarre file da un archivio ZIP?
Crea un’istanza Archive per lo ZIP e chiama ExtractToDirectory per decomprimere tutto. Scorri Archive.Entries quando devi ispezionare o salvare solo elementi specifici.
3. Estrarre un archivio equivale a decomprimere ZIP?
Decomprimere ZIP riguarda specificamente i file ZIP. L’estrazione è un’operazione più ampia e copre anche formati come 7Z, RAR, TAR, CAB, CPIO e WIM.
4. Le applicazioni .NET possono aprire archivi protetti da password?
Aspose.ZIP supporta l’accesso con password per i formati applicabili quando vengono fornite credenziali valide e impostazioni di decrittazione corrette. Il comportamento preciso dipende dal tipo di contenitore.
5. Come estrarre in sicurezza archivi caricati dagli utenti?
Usa storage temporaneo isolato, valida ogni percorso di output, limita formati accettati e dimensioni compresse/estratte, imposta un timeout di elaborazione e rimuovi i dati temporanei al termine.