ICSharpCode.SharpZipLib.dll ini kullanarak sizler için hazırladığım asp.net de zip ve unzip işlemlerini hazırladım.
İşlem kısaca textbox a sitenizdeki klasörün yolunu yazıyorsunuz ziple butonuyla belirlediğiniz klasöre zipliyor
Unzip i ise fileupload a bağladım isterseniz sitedeki klasörünze bağlayın onunlada pc den seçtiğiniz dosyayı geçiçi olarak upload edip yine belirlemiş olduğunuz klasöre dosyaları çıkartıyor :)
Buradan Gerekli dll i indirip referenceelarınıza eklemeyi unutmayınız ve
using ICSharpCode.SharpZipLib.Zip;
olarak Default.cs dosyanıza yazmayı unutmayınız.
Örnek Proje İndirmek İçin Tıklayın...
Default.aspx
Default.cs
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnzip_Click(object sender, EventArgs e)
{
lblmesaj.Text = ziple("zipli/", txtklasor.Text, "");
}
protected void btnzipac_Click(object sender, EventArgs e)
{
lblmesaj.Text = zipac("zipac/", FileUpload1, "");
}
private string ziple(string zipkaydedilecekyol, string ziplenecekklasoryol, string zipsifre)
{
FastZip ZipSorgu = new FastZip();
if (zipsifre != "")
{
ZipSorgu.Password = zipsifre;
}
ZipSorgu.CreateEmptyDirectories = false;
string uyari;
string rootPath = String.Empty;
if (IsPostBack)
{
rootPath = Request.PhysicalApplicationPath;
}
if (Directory.Exists(string.Format("{0}{1}", rootPath, ziplenecekklasoryol)) && Directory.Exists(Server.MapPath(zipkaydedilecekyol+ziplenecekklasoryol + ".zip")))
{
try
{
//ziple
ZipSorgu.CreateZip(string.Format("{0}" + ziplenecekklasoryol + ".zip", rootPath), string.Format("{0}{1}", rootPath, ziplenecekklasoryol), true, "");
//başkaklasöre Taşı
File.Move(Server.MapPath(ziplenecekklasoryol + ".zip"), Server.MapPath(zipkaydedilecekyol + ziplenecekklasoryol + ".zip"));
return uyari = "Zip dosyası " + zipkaydedilecekyol + ziplenecekklasoryol + ".zip adında oluşturuldu.";
}
catch
{
return uyari = "İşlem Sırasında Hata Oluştu Lütfen İşlemlerini Kontrol Edip Tekrar Deneyiniz";
}
}
else
{
return uyari = string.Format("{0} bu isimli klasor mevcut değil veya {0}" + ziplenecekklasoryol.Replace("/", string.Empty) + ".zip dosya var", ziplenecekklasoryol);
}
}
private string zipac(string zipcikarilacakyol, FileUpload FileUpload, string zipsifre)
{
string uyari;
string rootPath = String.Empty;
if (IsPostBack)
{
rootPath = Request.PhysicalApplicationPath;
}
try
{
string dosyaadi = FileUpload.FileName.ToString();
FileUpload.SaveAs(Server.MapPath(dosyaadi));
FastZip ZipSorgu = new FastZip();
if (zipsifre != "")
{
ZipSorgu.Password = zipsifre;
}
ZipSorgu.ExtractZip(string.Format("{0}{1}", rootPath, dosyaadi), string.Format("{0}" + zipcikarilacakyol, rootPath), "");
//başkaklasöre Taşı
File.Delete(Server.MapPath(dosyaadi));
return uyari = "Zip dosyası " + zipcikarilacakyol + dosyaadi + " isimli klasöre açıldı";
}
catch
{
return uyari = "İşlem Sırasında Hata Oluştu Lütfen İşlemlerini Kontrol Edip Tekrar Deneyiniz";
}
}
NOT: zipsifre stringini "" yaparsanız dosyalarınıza şifre koyulmaz ;)