آموزش آپلود فایل در ASP.NET

ASP.NET دارای دو کنترل است که به کاربران این امکان را می دهد که فایل های خود را در سرور وب آپلود ( ویکی پدیا ) کنند. هنگامی که سرور داده های فایل ارسال شده را دریافت می کند، اپلیکیشن می تواند هم آن ها را ذخیره کند و هم بررسی کند و یا آن ها را نادیده بگیرد.

بسته جامع آموزش طراحی سایت و برنامه نویسی با تکنولوژی ASP.net

کنترل های زیر اجازه بارگذاری یا همان آپلود فایل ( File uploading ) را می دهند.
۱) HtmlInputFile یک کنترل سرور HTML
۲) FileUpload یکی از کنترل های وب که مخصوص ASP.NETمی باشد.

هر دو کنترل امکان  آپلود فایل در ASP.NET را فراهم می کنند ، اما کنترل FileUpload کدگذاری (encoding)  فرم را به طور خودکار تنظیم می کند در حالی که HtmlInputFile این کار را انجام نمی دهد.

  •  ابتدا برای آموزش File uploading از روش دوم یعنی کنترل FileUpload استفاده می کنیم. کنترل FileUpload به کاربر اجازه می دهد تا فایل آپلود شده را جستجو کرده و انتخاب کند. او این کار را با ارائه یک دکمه (browse button) و یک کادر متن (text box) برای وارد کردن نام فایل مورد نظر انجام می دهد.
    هنگامی که کاربر با تایپ کردن نام یا جستجوی آن ، نام فایل را در کادر متن وارد کرد ، می تواند با دکمه SaveAs کنترل FileUpload فایل را در دیسک ذخیره کند.

دستور نگارش یا همان سینتکس کنترل FileUpload به شرح زیر می باشد:

<asp:FileUpload ID= "Uploader" runat = "server" />

کلاس FileUpload از کلاس WebControl مشتق شده است و تمام اعضای آن را به ارث می برد. علاوه بر آن ، کلاس FileUpload دارای خصوصیات زیر نیز می باشد:

خصوصیات توضیحات
FileBytes آرایه ای از بایت های فایلی ای را که آپلود می شود برمی گرداند.
FileContent یک شی Stream باز می گرداند که به فایلی که قرار است با استفاده از کنترل FileUpload در سرور آپلود شود، اشاره می کند.
FileName نام فایلی را که آپلود می شود برمی گرداند.
HasFile مشخص می کند که آیا کنترل، فایلی برای آپلود دارد یا خیر.
PostedFile ارجاعی به فایل آپلود شده، می دهد.

 

فایل ارسال شده در یک شی از نوع HttpPostedFile کپسوله شده است که از طریق ویژگی PostedFile از کلاس FileUpload قابل دسترسی است.

کلاس HttpPostedFile دارای ویژگی های زیر است که اغلب اوقات از آن ها استفاده می شود:

مشخصات توضیحات
ContentLength اندازه فایل آپدیت شده را به بایت بر می گرداند.
ContentType نوع MIME فایل آپلود شده را در سرور بر می گرداند.
FileName نام کامل فایل آپلود شده را بر می گرداند.
InputStream یک شی stream که به فایل آپلود شده اشاره می کند را باز می گرداند.

 

مثال زیر کنترل FileUpload و خصوصیات آن را نشان می دهد. فرم شامل یک کنترل FileUpload همراه با یک دکمه ذخیره و یک کنترل برچسب برای نمایش نام فایل ، نوع فایل و طول فایل می باشد.

در نمای طراحی ، فرم به شرح زیر می باشد:

کد Content file به شرح زیر می باشد:

<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>

کد بک اند دکمه ی ذخیره سازی به شرح زیر است:

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 و catch برای گرفتن خطا ها استفاده می شوند و پیام خطا را نمایش می دهند.

  • اکنون می خواهیم به آموزش File uploadinfg از طریق روش اول و با دو زبان C# و VB.Net بپردازیم.
    کد HTML زیر شامل یک عنصر فایل HTML INPUT ، کنترل دکمه ASP.Net و کنترل برچسب است.
    توجه: برای بارگذاری پرونده با استفاده از عنصر HTML INPUT ، باید ویژگی enctype را در فرم با مقدار multipart / form-data تنظیم کنید.
<form id="form1" runat="server" enctype="multipart/form-data">
    <input type="file" name="FileUpload" />
    <asp:Button ID="Button1" Text="Upload" runat="server" OnClick="Upload" />
    <br />
    <asp:Label ID = "lblMessage" Text="File uploaded successfully." runat="server" ForeColor="Green" Visible="false" />
</form>

سپس باید نام زیر را وارد کنید.
برای C#

using System.IO;

برای VB.Net

Imports System.IO

با کلیک بر روی دکمه Upload ، پرونده بارگذاری شده از مجموعه Request.Files با استفاده از نام عنصر HTML HTML INPUT واکشی می شود.
اگر مقدار File NULL نباشد ، در پوشه مربوطه ذخیره می شود و پیام موفقیت برای کاربر نمایش داده می شود.

برای C#

protected void Upload(object sender, EventArgs e)
{
    //Access the File using the Name of HTML INPUT File.
    HttpPostedFile postedFile = Request.Files["FileUpload"];
 
    //Check if File is available.
    if (postedFile != null && postedFile.ContentLength > 0)
    {
        //Save the File.
        string filePath = Server.MapPath("~/Uploads/") + Path.GetFileName(postedFile.FileName);
        postedFile.SaveAs(filePath);
        lblMessage.Visible = true;
    }
}

برای VB.Net

Protected Sub Upload(ByVal sender As Object, ByVal e As EventArgs)
    'Access the File using the Name of HTML INPUT File.
    Dim postedFile As HttpPostedFile = Request.Files("FileUpload")
    'Check if File is available.
    If postedFile IsNot Nothing And postedFile.ContentLength > 0 Then
        'Save the File.
        Dim filePath As String = Server.MapPath("~/Uploads/") + Path.GetFileName(postedFile.FileName)
        postedFile.SaveAs(filePath)
        lblMessage.Visible = True
    End If
End Sub

نتیجه

در این مقاله به بیان و توضیح دو روش برای آپلود فایل در ASP.NET پرداختیم. برای هر روش کد نویسی های مخصوص اش را در اختیارتان قرار دادیم و روش کار هر کدام را با جزئیات بیان کردیم.
امیدواریم که از این مقاله نهایت استفاده را ببرید و به راحتی بتوانید فایل مورد نظر خود را در هر سایزی که هست آپلود و بارگذاری کنید.