ASP.NET - آپلود فایل

ASP.NET دارای دو کنترل است که به کاربران اجازه می دهد فایل ها را در وب سرور آپلود کنند. هنگامی که سرور داده های فایل ارسال شده را دریافت کرد، برنامه می تواند آن را ذخیره کند، بررسی کند یا نادیده بگیرد. کنترل‌های زیر اجازه آپلود فایل را می‌دهند:HtmlInputFile - یک کنترل سرور HTMLFileUpload - و کنترل وب ASP.NETهر دو کنترل اجازه آپلود فایل را می دهند، اما کنترل FileUpload به طور خودکار کدگذاری فرم را تنظیم می کند، در حالی که HtmlInputFile این کار را انجام نمی دهد.در این آموزش از کنترل FileUpload استفاده می کنیم. کنترل FileUpload به کاربر این امکان را می دهد که فایل مورد نظر را جستجو و انتخاب کند و یک دکمه مرور و یک جعبه متن برای وارد کردن نام فایل ارائه می دهد.هنگامی که کاربر با تایپ نام یا مرور نام فایل را در کادر متن وارد کرد، می‌توان از روش SaveAs کنترل FileUpload برای ذخیره فایل در دیسک فراخوانی کرد.سینتکس اصلی FileUpload به این صورت است:<asp:FileUpload ID= "Uploader" runat = "server" />کلاس FileUpload از کلاس WebControl مشتق شده است و تمام اعضای آن را به ارث می برد. جدای از آن ها، کلاس FileUpload دارای ویژگی های فقط خواندنی زیر است:توضیحات خواصFileBytes آرایه ای از بایت های موجود در فایلی که باید آپلود شود را برمی گرداند.FileContent شی جریان را که به فایلی که قرار است آپلود شود اشاره می کند، برمی گرداند.FileName نام فایلی که باید آپلود شود را برمی گرداند.HasFile مشخص می کند که آیا کنترل فایلی برای آپلود دارد یا خیر.PostedFile یک مرجع به فایل آپلود شده برمی گرداند.فایل ارسال شده در یک شی از نوع HttpPostedFile محصور شده است که می توان از طریق ویژگی PostedFile کلاس FileUpload به آن دسترسی داشت.کلاس HttpPostedFile دارای ویژگی های پرکاربرد زیر است:توضیحات خواصContentLength اندازه فایل آپلود شده را بر حسب بایت برمی گرداند.ContentType نوع MIME فایل آپلود شده را برمی گرداند.FileName نام کامل فایل را برمی‌گرداند.InputStream یک شی جریان را که به فایل آپلود شده اشاره می کند، برمی گرداند.مثالمثال زیر کنترل FileUpload و ویژگی های آن را نشان می دهد. فرم دارای یک کنترل FileUpload به همراه یک دکمه ذخیره و یک کنترل برچسب برای نمایش نام فایل، نوع فایل و طول فایل است.در نمای طراحی، فرم به صورت زیر است:کد فایل محتوا به صورت زیر است:<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" ="btnsave_Click" Text="Save" style="width:85px" /> <br /><br /> <asp:Label ID="lblmessage" runat="server" /> </div> </form></body>کد پشت دکمه ذخیره به صورت زیر است: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("<c:\\SaveDirectory>" + 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 از فضای نام System.IO مشتق شده است، بنابراین باید گنجانده شود.بلوک‌های try and catch برای گرفتن خطاها استفاده می‌شوند و پیام خطا را نمایش می‌دهند.