#975 - Utilizzare la compressione GZIP con ASP.NET

Oltre alle classi esterne come SharpZipLib, dalla versione 2.0 del .NET Framework è disponibile una classe apposita per la compressione degli stream.

Vediamo un esempio semplice per comprimere un file:

string SourceFile = "C:\\file.txt";
string DestinationFile = "C:\\file.gzip";

using (FileStream streamWriter = new FileStream(DestinationFile, FileMode.Create, FileAccess.Write, FileShare.None))
{
  using (FileStream streamReader = new FileStream(SourceFile, FileMode.Open, FileAccess.Read, FileShare.Read))
  {
    using (GZipStream gzip = new GZipStream(streamWriter, CompressionMode.Compress, true))
    {
      byte[] buffer = new byte[streamReader.Length];
      streamReader.Read(buffer, 0, buffer.Length);
      gzip.Write(buffer, 0, buffer.Length);
    }
  }
}

E per la decompressione:

string SourceFile = "C:\\file.gzip";
string DestinationFile = "C:\\file.txt";

using (FileStream streamReader = new FileStream(SourceFile, FileMode.Open, FileAccess.Read, FileShare.Read))
{
  using (FileStream streamWriter = new FileStream(DestinationFile, FileMode.Create, FileAccess.Write, FileShare.None))
  {
    using (GZipStream gzip = new GZipStream(streamReader, CompressionMode.Decompress, true))
    {
      const int bufferSize = 1024;
      byte[] buffer = new byte[bufferSize];

      while (true)
      {
        int count = gzip.Read(buffer, 0, bufferSize);
        if (count != 0)
          streamWriter.Write(buffer, 0, count);
        else
          break;
      }
    }
  }
}

Questa tecnica è applicabile a qualsiasi tipo di Stream, dunque si può sfruttare anche in HttpModule per comprimere al volo, in determinati casi e senza utilizzare le funzionalità native di IIS, il contenuto servito da una pagina.

IL CONTENUTO
CONNECTIONSTRING
Ti serve una stringa di connessione ad un database?
PROVIDER ASP.NET 2.0, 3.5 e 4.0

Seleziona il tuo provider per avere il web.config pronto per Membership, Roles e Profile API.

SCRIPT VIA E-MAIL

Iscriviti alle nostre newsletter unoscript@lgiorno e Xcript per ricevere gli script via e-mail.

MEDIA
IN EVIDENZA
MISC