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

دوشنبه 1 تیر 1394

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

نمایش محتویات فایل 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();

            }

 

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید