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 <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
input{margin:0;padding:0;}</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:label ID="lblmesaj" runat="server"></asp:label>
<br />
Klasör Adı : <asp:textbox ID="txtklasor" runat="server">Zip Files</asp:textbox>
<asp:button ID="btnzip" runat="server" onclick="btnzip_Click"
Text="Zip Dosyası Oluştur" />
<br />
<asp:fileupload ID="FileUpload1" runat="server" />
<asp:button ID="btnzipac" runat="server" onclick="btnzipac_Click"
Text="Zip i Aç" />
</div>
</form>
</body>
</html>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