مشخصات مقاله
-
3595
-
0.0
-
17984
-
0
-
0
آموزش File Uploading در ASP.NET
آموزش آپلود / بارگذاری فایل در سرویس دهنده با استفاده از تکنولوژی ASP.NET
ASP.NET دو کنترل ویژه ی بارگذاری (آپلود) فایل در سرویس دهنده (server) ارائه می دهد. مجرد اینکه سرور داده های فایل ارسال (post) شده را دریافت می کند، اپلیکیشن مورد نظر می تواند آن را ذخیره کرده، بررسی کند و یا آن را کاملا نادیده بگیرد. دو کنترل زیر امکان بارگذاری فایل را در سرور فراهم می کند.
- HtmlInputFile – یک کنترل سرور HTML
- FileUpload – یکی از کنترل های وب که متعلق به خود ASP.NET می باشد
هر دو کنترل نام برده قابلیت بار گذاری فایل در سرور را دارند، با این تفاوت که FileUpload به صورت خودکار رمزگذاری (encoding) فرم را تنظیم (set) می کند در حالی که کنترل HtmlInputFile چنین کاری را انجام نمی دهد.
در این فصل از سری مقاله های آموزشی ASP.NET تنها به شرح FileUpload می پردازیم. کنترل ذکر شده به کاربر اجازه می دهد فایلی که قرار است آپلود شود را جستجو (مرور) کرده و انتخاب کند. این کار را با ارئه ی یک دکمه ی پیمایش (browse button) و کادر متن (text box) برای وارد کردن اسم فایل مورد نظر انجام می دهد.
پس از اینکه کاربر اسم فایل را در کادر متن وارد کرد، متد SaveAs کنترل نام برده فراخوانده شده و فایل مورد نظر داخل دیسک ذخیره می شود.
دستور نگارش (syntax) کنترل FileUpload به صورت زیر می باشد.
< asp:FileUpload ID="Uploader" runat="server" / >
کلاس FileUpload از کلاس WebControl مشتق شده و از این رو تمامی اعضای آن را به ارث می برد. علاوه بر اعضای به ارث گرفته شده کلاس FileUpload دارای خواص read-only(خاصیت یا property هایی که تنها دارای getter هستند read-only اطلاق می گردند) زیر می باشد.
فایل ارسال (post) شده در شی از نوع HttpPostedFile کپسوله سازی می شود. می توان به وسیله ی خاصیت PostedFile کلاس FileUpload به فایل ارسال شده دسترسی پیدا کرد.
کلاس HttpPostedFile دارای خواص بسیار پرکاربرد زیر است.
مثال زیر کنترل FileUpload و خاصیت های آن را نمایش می دهد.
فرم مورد نظر دارای یک کنترل FileUpload، دکمه ی ذخیره سازی (save button) و یک کنترل label ویژه ی نمایش اسم فایل، نوع و طول آن می باشد.
کد Content file به ترتیب زیر می باشد.
< %@ Page Language="C#" AutoEventWireup="true" CodeBehind="File_Uploading.aspx.cs" Inherits="Asp_Net_File_Uploading.File_Uploading" % >
< !DOCTYPE html >
< html xmlns="http://www.w3.org/1999/xhtml" >
< head runat="server" >
< title >File_Uploading< /title >
< /head >
< body >
< form id="form1" runat="server" >
< div >
< h3 >File Upload:< /h3 >
< br / >
< asp:FileUpload ID="FileUpload1" runat="server" / >
< br / >
< br / >
< asp:Button ID="btnsave" runat="server" OnClick="btnsave_Click" Text="Save" Style="width: 85px" / >
< br / >
< br / >
< asp:Label ID="lblmessage" runat="server" / >
< /div >
< /form >
< /body >
< /html >
Code behind دکمه ذخیره سازی (save button) نیز به شرح زیر می باشد.
protected void btnsave_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
if (FileUpload1.HasFile)
{
try
{
sb.AppendFormat(" Uploading file: {0}", FileUpload1.FileName);
//saving the file
FileUpload1.SaveAs(Server.MapPath(Request.ApplicationPath) +"/Files/" + FileUpload1.FileName);
//Showing the file information
sb.AppendFormat("< br/ > Save As: {0}", FileUpload1.PostedFile.FileName);
sb.AppendFormat("< br/ > File type: {0}", FileUpload1.PostedFile.ContentType);
sb.AppendFormat("< br/ > File length: {0}", FileUpload1.PostedFile.ContentLength);
sb.AppendFormat("< br/ > File name: {0}", FileUpload1.PostedFile.FileName);
}
catch (Exception ex)
{
sb.Append("< br/ > Error < br/ >");
sb.AppendFormat("Unable to save file < br/ > {0}", ex.Message);
}
}
else
{
lblmessage.Text = sb.ToString();
}
}
به نکات زیر دقت کنید.
کلاس StringBuilder از فضای نام (namespace) System.IO مشتق شده و از این رو حتما باید لحاظ شود.
بلوک های catch و try به منظور ضبط و نمایش پیام های خطا بکار می روند.