چگونه به صورت پویا فایل های زیپ را در زمان اجرا با استفاده از کتابخانه دات نت ایجاد یا خلق کنیم
سه شنبه 21 مرداد 1393در این مقاله یاد خواهیم گرفت چگونه به صورت پویا فایل های زیپ را در زمان اجرا در ASP.NET توسط کتابخانه DotNetZip ایجاد کنیم.
در ابتدا باید DLL کتابخانه DotNetZip را با استفاده از لینک زیر دانلود کنید.
http://dotnetzip.codeplex.com/releases/view/68268
حالا با داشتن DLL باید Ionic.Zip.Reduced.dll را در فولدر bin قرار دهید.
فضاهای نام:
شما باید فضاهای نام زیر را وارد کنید:
using System.IO; using Ionic.Zip; using System.Collections.Generic;
ذخیره سازی فایل ها در پوشه سرور:
همان طور که در تصویر می بینید من در وب سایتم فولدری به نام Files که شامل فایل های زیر است را ایجاد کرده ام
نمایش فایل هایی ذخیره شده در فولدر در GridView بر روی سرور:
من یک کنترل GridView به همراه یک دکمه برای دانلود فایل ها قرار داده ام.
همچنین از یک کنترل CheckBox در GridView استفاده کرده ام ،این کنترل به کاربران اجازه می دهد تا فایل هایی که تمایل به دانلود دارند را دانلود کنند.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" EmptyDataText="No files available"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="chkSelect" runat="server" /> <asp:Label ID="lblFilePath" runat="server" Text='<%# Eval("Value") %>' Visible="false"></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Text" HeaderText="File Name" /> </Columns> </asp:GridView> <br /> <asp:Button ID="btnDownload" runat="server" Text="Download" OnClick="DownloadFiles" />
قطعه کد زیر برای بایند کردن لیست فایل ها از فولدر یا دایرکتوری سرور به کنترل GridView در ASP.NET است:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string[] filePaths = Directory.GetFiles(Server.MapPath("~/Files/")); List<ListItem> files = new List<ListItem>(); foreach (string filePath in filePaths) { files.Add(new ListItem(Path.GetFileName(filePath), filePath)); } GridView1.DataSource = files; GridView1.DataBind(); } }
دانلود چندین فایل انتخاب شده در گرید ویو به عنوان فایل زیپ با استفاده از DotNetZip:
protected void DownloadFiles(object sender, EventArgs e) { using (ZipFile zip = new ZipFile()) { zip.AlternateEncodingUsage = ZipOption.AsNecessary; zip.AddDirectoryByName("Files"); foreach (GridViewRow row in GridView1.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-MMM-dd-HHmmss")); Response.ContentType = "application/zip"; Response.AddHeader("content-disposition", "attachment; filename=" + zipName); zip.Save(Response.OutputStream); Response.End(); } }
- ASP.net
- 2k بازدید
- 11 تشکر