ayfer Yeni Üye
Kayıt Tarihi: 30-Mayıs-2012 Ülke: Turkiye Gönderilenler: 12
|
Gönderen: 30-Mayıs-2012 Saat 21:30 | Kayıtlı IP
|
|
|
SharpZipLib DLL dosyasını kullanarak dosyaları .zip
sıkıştırmasına tabi tutabilirsiniz.
using ICSharpCode.SharpZipLib.Zip;
using System.IO;
ZipOutputStream zos = null;
protected void Button1_Click(object sender, EventArgs e)
{
string[] pathCollection = new string[2];
PathCellction[0] = "c:\\folder1";
PathCellction[1] = "c:\\folder2";
StartZip(pathCollection, "filename");
}
protected void StartZip(string[] pathCollection, string
strFileName)
{
MemoryStream ms;
Response.ContentType = "application/octet-stream";
strFileName =
HttpUtility.UrlEncode(strFileName).Replace('+', ' ');
Response.AddHeader("Content-Disposition", "attachment;
filename=" + strFileName + ".zip");
ms = new MemoryStream();
zos = new ZipOutputStream(ms);
addZipEntry(pathCollection);
ms.Close();
zos.Finish();
zos.Close();
Response.Clear();
Response.BinaryWrite(ms.ToArray());
Response.End();
}
protected void addZipEntry(string[] pathCollection)
{
for (int i = 0; i < pathCollection.Length; i++)
{
string strPath = pathCollection;
addZipEntry(strPath, strPath.LastIndexOf("\\") + 1);
}
}
protected void addZipEntry(string strPath, int baseIndex)
{
DirectoryInfo di = new DirectoryInfo(strPath);
foreach (DirectoryInfo item in di.GetDirectories())
{
addZipEntry(item.FullName, baseIndex);
}
foreach (FileInfo item in di.GetFiles())
{
FileStream fs = File.OpenRead(item.FullName);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
string strEntryName = item.FullName.Remove(0,
baseIndex);
ZipEntry entry = new ZipEntry(strEntryName);
zos.PutNextEntry(entry);
zos.Write(buffer, 0, buffer.Length);
fs.Close();
}
}
|