#115 - Creare file ZIP con System.IO.Packaging
di Cristian Civera, in Windows Presentation Foundation, 10 aprile 2009
Con il .NET Framework 3.0 Microsoft ha incluso nuovi framework quali Windows Communication Foundation, Windows Presentation Foundation e Windows Workflow Foundation, ma ha anche aggiunto il supporto alla lettura e la manipolazionei di documenti XPS (XML Paper Specification). Quest'ultimi sono pacchetti di file XML e risorse che rappresentano documenti WYSWYG pronti per essere consultati e stampati.
Di fatto questi pacchetti non sono altro che file ZIP, detti Package i quali contengono file eventualmente compressi, detti PackagePart, strutturati secondo il container ZIP. In unione ad essi è presente un file [Content_Types].xml contenente informazioni aggiuntive come il content-type di ogni file e le relazioni interne o esterne al file stesso.
Questa tecnologia è aperta e può quindi essere sfruttata anche per altri scopi, per esempio per creare semplicemente file ZIP, attraverso la classe ZipPackage del namespace System.IO.Packaging.
// Creo il file ZIP using (Package packege = ZipPackage.Open("test.zip", FileMode.Create)) { // Inserisco il primo file PackagePart part = packege.CreatePart(new Uri("/file1.txt", UriKind.Relative), MediaTypeNames.Text.Plain, CompressionOption.Normal); // Apro lo stream e inserisco del testo using (Stream partStream = part.GetStream()) { using (StreamWriter writer = new StreamWriter(partStream)) { writer.Write("Test"); } } // Creo il secondo file in una sotto directory part = packege.CreatePart(new Uri("/subDir/file2.jpg", UriKind.Relative), MediaTypeNames.Image.Jpeg, CompressionOption.Normal); using (Stream partStream = part.GetStream()) { // Copio il file nello stream using (Stream fileStream = File.OpenRead(@"c:\immagine.jpg")) { fileStream.WriteToStream(partStream, 4096); } } }
Il metodo WriteToStream sullo stream serve per travasare il file ed è descritto nello script #93.
Per approfondimenti su Open Packaging Conventions:
http://www.microsoft.com/whdc/xps/downloads.mspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
-
#136 - Utilizzare LINQ per raggruppare gli application pool di IIS in base al tipo di pipeline
-
La piattaforma Microsoft per il cloud computing: Windows Azure
-
Architettura del software: le applicazioni web basate su servizi
-
Windows Server AppFabric in versione 1.0 RTM
-
#1004 - Utilizzare le DataAnnotation con ASP.NET Dynamic Data Controls
-
#158 - Caricare un file XML remoto tramite la classe XDocument
-
nuovo tool da ms resarch: dotolo. ottimizza il cariamento delle pagine #ajax, gira con #netfx3.5 http://u.aspitalia.com/ah
-
Inside ModelVirtualCasting #5: i servizi
-
Realizzare applicazioni web on the cloud con Microsoft Windows Azure
-
#176 - Ottimizzare l'aggiornamento di una entity sul database con Entity Framework
-
#162 - Caricare un file XML da remoto tramite XDocument e HttpWebRequest
-
#133 - Una collezione avanzata per il data binding di WPF

Commenti
mi piace
non mi piace
Facebook
Twitter










