نمایش محتویات فایل Zip و دانلود آیتم های انتخاب شده از آن در Asp.Net

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

نمایش محتویات فایل Zip و دانلود آیتم های انتخاب شده از آن در Asp.Net

ابتدا از طریق 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();

            }

 

فایل های ضمیمه