نمایش محتویات فایل 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
- 2k بازدید
- 2 تشکر