Showing posts with label Write Zip File. Show all posts
Showing posts with label Write Zip File. Show all posts

Friday, 10 February 2012

CREATE ZIP FILE IN ASP.NET



public class Zip
{
public Zip()
{
}
static string writetofilepath = System.Web.HttpContext.Current.Server.MapPath("~/Files/");
public static void WriteZipFile(string[] filesToZip, string writeToFilePath)
{
try
{
if (EnsureDirectory(writetofilepath))
{
Crc32 crc = new Crc32();
FileStream fs1 = File.Create(writeToFilePath);
ZipOutputStream s = new ZipOutputStream(fs1);
s.SetLevel(9); // 0 - store only to 9 - means best compression
for (int i = 0; i < filesToZip.Length; i++)
{
      // Must use a relative path here so that files show up in the Windows Zip File Viewer
      // .. hence the use of Path.GetFileName(...)
ZipEntry entry = new ZipEntry(Path.GetFileName(writetofilepath + filesToZip[i]));
entry.DateTime = DateTime.Now;
// Read in the
using (FileStream fs = File.OpenRead(writetofilepath + filesToZip[i]))
{
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
      // set Size and the crc, because the information
      // about the size and crc should be stored in the header
      // if it is not set it is automatically written in the footer.
      // (in this case size == crc == -1 in the header)
      // Some ZIP programs have problems with zip files that don't store
      // the size and crc in the header.
entry.Size = fs.Length;
fs.Close();
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
s.PutNextEntry(entry);
s.Write(buffer, 0, buffer.Length);
}
}
s.Finish();
s.Close();
}
}
catch (Exception ex)
{
HttpContext.Current.Trace.Warn(ex.ToString());
}
}
private static bool EnsureDirectory(string path)
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
return true;
}
public string[] getdir()
{
DirectoryInfo di = new DirectoryInfo(writetofilepath);
FileInfo[] rgFiles = di.GetFiles("*.pdf");
string[] files = new string[rgFiles.Length];
int i = 0;
foreach (FileInfo fi in rgFiles)
{
files[i] = fi.Name;
 i++;
 }
 return files;
 }
 }