نمایش محتویات فایل Zip و دانلود آیتم های انتخاب شده از آن در Asp.Net
دوشنبه 1 تیر 1394در این مقاله ما قصد محتویات یک فایل زیپ شده را در گرید ویو نمایش دهیم و کنار هر آیتم گزینه انتخاب قرار دهیم و بعد از انتخاب آیتم ها ، موارد انتخاب شده استخراج و آماده دانلود شوند .
ابتدا از طریق NuGet باید DotNetZip Library را نصب میکنیم

برای استفاده از این کتابخانه باید فضای نام زیر را اضافه کنیم
using Ionic.Zip;
یک فایل زیپ کنار پروژه قرار داده شده که محتویات آن چند فایل Word هست
برای نمایش محتویات فایل زیپ از کد های زیر استفاده میکنیم
protected void Page_Load(object sender, EventArgs e)
{
string filePath = Server.MapPath("~/Files.zip");
DataTable zipTable = new DataTable();
zipTable.Columns.Add("File Name");
zipTable.Columns.Add("File Size");
zipTable.Columns.Add("File Size1");
using (ZipFile zip = ZipFile.Read(filePath))
{
foreach (ZipEntry en in zip)
{
zipTable.Rows.Add(en.FileName, en.CompressedSize);
}
}
grZipFiles.DataSource = zipTable;
grZipFiles.DataBind();
}


در یک صفحه دیگر که نام WebForms2.aspx هست همین کار را انجام دادیم و برای گرید حالت انتخاب قرار دادیم که با تیک زدن گرینه و زدن کلید دانلود آیتم های انتخاب شده استخراج شده و دانلود خواهند شد .

کد های کلید دانلود
using(ZipFile zip = new ZipFile())
{
zip.AlternateEncodingUsage = ZipOption.AsNecessary;
zip.AddDirectoryByName("Files");
foreach (GridViewRow row in grFiles.Rows)
{
if((row.FindControl("chkSelect") as CheckBox).Checked)
{
string filePath = (row.FindControl("lblFilePath") as Label).Text;
zip.AddFile(filePath, "Files");
}
}
Response.Clear();
Response.BufferOutput = false;
string zipName = String.Format("Zip_{0}.zip", DateTime.Now.ToString("yyyy-MM-dd-HHmmss"));
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "attachment;fileName=" + zipName);
zip.Save(Response.OutputStream);
Response.End();
}
- ASP.net
- 3k بازدید
- 2 تشکر