دانلود فایل از GridView در ASP.Net
یکشنبه 18 مرداد 1394در این مقاله بررسی خواهیم کرد که چگونه در ASP.Net از یک GridView، بتوانیم یک فایل را دانلود و آپلود کنیم.
مواردی که در این مقاله شرح داده می شوند شامل موارد زیر می باشد:
آپلود فایل با استفاده از upload control
ذخیره یک فایل در یک پوشه در بانک اطلاعاتی
نمایش لیست فایل های دانلود شده در یک GridView
دانلود فایل با کلیک بر روی LinkButton
برای ایجاد این برنامه، مراحل زیر را انجام می دهیم.
بانک اطلاعاتی
ما از جدول و پروسیجر(procedure) زیر برای نشان دادن این مفهوم استفاده می کنیم.
با استفاده از کدهای زیر، جدولمان را می سازیم.
CREATE table FileDetails ( FileId int Primary Key Identity(1,1), FileName nvarchar(100), FileSize nvarchar(30), FileType nvarchar(30), FilePath nvarchar(200), CreatedOn Datetime ) Use the following script to Create the Stored procedures --To get all File Details CREATE procedure USP_Select_FileDetails AS Begin Select * from FileDetails END --To Insert File Details CREATE procedure USP_Insert_FileDetails @FileName nvarchar(100), @FileSize nvarchar(30), @FileType nvarchar(30), @FilePath nvarchar(200), @CreatedOn Datetime = Null AS Begin Insert FileDetails(FileName,FileSize,FileType,FilePath,CreatedOn) Values(@FileName,@FileSize,@FileType,@FilePath,GetDate()) END
جدول ما به این شکل خواهد شد.
لازم به ذکر است، برای کسانی که زمان ایجاد بانک اطلاعاتی را ندارند، فایل اجرایی آن در فایل ضمیمه قرار داده شده است.
ساخت پروژه
اکنون به روش زیر پروژه را ایجاد می کنیم.
Visual Studio را باز کرده و مانند تصویر زیر یک پروژه جدید ایجاد کنید.
نام و محل ذخیره سازی پروژه را مشخص کنید.
Web.Config
connection string را در فایل Web.Config مانند قطعه کد زیر ایجاد کنید.
<connectionStrings> <add name="conStr" connectionString="Password= 123; User ID=sa; Database=DUF; Data Source=." providerName="System.Data.SqlClient"/> </connectionStrings>
روی Solution Explorer راست کلیک کرده و add a web form را انتخاب کنید.
مانند قطعه کد هایی که زیر مشاهده می کنید، صفحه aspx. خود را طراحی کنید.
<div align="center" style="width: 100%;"> <fieldset style="width: 30%;"> <legend>دانلود فایل توسط گرید ویو (GridView)</legend> <table width="100%"> <tr> <td align="left"> <asp:FileUpload ID="FileUpload1" runat="server" /> </td> <td align="left"> <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" /> </td> </tr> <tr> <td colspan="2" align="center"> <br /> <asp:Label ID="lblMsg" runat="server" ></asp:Label> </td> <tr> <td colspan="2" align="center"> <br /> <asp:GridView ID="gvFiles" runat="server" AutoGenerateColumns="False" Width="100%" OnRowCommand="gvFiles_RowCommand"> <Columns> <asp:TemplateField HeaderText="لینک دانلود"> <ItemTemplate> <asp:LinkButton ID="lnkDownload" runat="server" CausesValidation="False" CommandArgument='<%# Eval("FileName") %>' CommandName="Download" Text='<%# Eval("FileName") %>' /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="FileSize" HeaderText="حجم فایل" /> <asp:BoundField DataField="FileType" HeaderText="نوع فایل" /> </Columns> </asp:GridView> </td> </tr> </table> </fieldset> </div> <div align="center"> <a href="http://www.barnamenevisan.org">مرجع تخصصی برنامه نویسان</a> </div>
CodeBehind
namespaceهای زیر را به پروژه اضافه کنید.
using System.Data; using System.IO; using System.Data.SqlClient; using System.Configuration; using System.Drawing;
بصورتی در زیر آمده هاست، ConnectionString ساخته شده در فایل Web.Config را فراخوانی کنید.
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString);
توابع تعریف شده برای برنامه
//Get file type by Extension private string GetFileExtension(string fileExtension) { switch (fileExtension.ToLower()) { case ".docx": case ".doc": return "Microsoft Word Document"; case ".xlsx": case ".xls": return "Microsoft Excel Document"; case ".txt": return "Text Document"; case ".jpg": case ".png": return "Image"; default: return "Unknown"; } } //Save File in folder and File details and Path to database private void UploadFile() { string FileName = string.Empty; string FileSize = string.Empty; string extension = string.Empty; string FilePath = string.Empty; if (FileUpload1.HasFile) { extension = Path.GetExtension(FileUpload1.FileName); FileName = FileUpload1.PostedFile.FileName; FileSize = FileName.Length.ToString() + " Bytes"; //strFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + FileUpload1.FileName; FileUpload1.PostedFile.SaveAs(Server.MapPath(@"~/Application/FileUploads/" + FileName.Trim())); FilePath = @"~/Application/FileUploads/" + FileName.Trim().ToString(); } else { lblMsg.Text = "Plase upload the file"; lblMsg.ForeColor = Color.Red; return; } SqlCommand cmd = new SqlCommand("USP_Insert_FileDetails", con); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@FileName", FileName); cmd.Parameters.AddWithValue("@FileSize", FileSize); cmd.Parameters.AddWithValue("@FileType", GetFileExtension(extension)); cmd.Parameters.AddWithValue("@FilePath", FilePath); con.Open(); int result = cmd.ExecuteNonQuery(); if (result > 0) { lblMsg.Text = "File Uploaded Successfully "; lblMsg.ForeColor = Color.Green; BindGridView(); } } //Displaying the list of files in GridView that are already uploaded private void BindGridView() { SqlDataAdapter adp = new SqlDataAdapter("USP_Select_FileDetails", con); adp.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure; if (con.State != ConnectionState.Open) { con.Open(); } DataSet ds = new DataSet(); adp.Fill(ds); gvFiles.DataSource = ds; gvFiles.DataBind(); }
Event Handlers
protected void Page_Load(object sender, EventArgs e) { lblMsg.Text = string.Empty; if (!Page.IsPostBack) { BindGridView(); } } protected void btnUpload_Click(object sender, EventArgs e) { UploadFile(); } protected void gvFiles_RowCommand(object sender, GridViewCommandEventArgs e) { Response.Clear(); Response.ContentType = "application/octet-stream"; Response.AppendHeader("Content-Disposition", "filename=" + e.CommandArgument); Response.TransmitFile(Server.MapPath("~/Application/FileUploads/") + e.CommandArgument); Response.End(); }
خروجی برنامه
می توانیم با استفاده از کنترل file upload و کلیک بر روی دکمه Upload فایل های خود را upload کنیم. فایل های upload شده در GridView ظاهر نمایش داده می شوند. روی link button کلیک کنید تا بتوانید فایل را دانلود کنید.
- ASP.net
- 2k بازدید
- 3 تشکر