Senin, Februari 09, 2009

Extract Zip File In ASP.NET

Summary
Extract your zip file in webhostforasp.net using OpenSource Zip Library in asp.net (SharpZipLib)

.NET Classes used :
# using System;
# using System.IO;
# using ICSharpCode.SharpZipLib.Zip;

I have used open source zip library. Which you have to download from http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx

Put ICSharpCode.SharpZipLib.DLL into your bin folder of asp.net application.

Use Following function to extract zip file. Assign your zipfilename in ZipFileName variable.

You Need Folder Rights to Create File Programmatically.


try
{
string ZipFileName = txtFileName.Text;
if (!File.Exists(Server.MapPath(ZipFileName)))
{
lblStatus.Text="File Does Not Exists.";
return;
}

using (ZipInputStream s = new ZipInputStream(File.OpenRead(Server.MapPath(ZipFileName))))
{

ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);

// create directory
if (directoryName.Length > 0)
{
Directory.CreateDirectory(Server.MapPath(directoryName));
}

if (fileName != String.Empty)
{
using (FileStream streamWriter = File.Create(Server.MapPath(theEntry.Name)))
{

int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
}
}
}
}
lblStatus.Text = "Done";
}
catch (Exception ex)
{
lblStatus.Text = ex.Message;
}
finally
{

}

Enjoy!!