En  Fa
درحال مشاهده: مقالات  > توسعه تحت وب  > ASP.NET  > آپلود فايل بر روي سرور با استفاده از ASP.NET
 
 

دسته بندی مقالات

 

 

دسته بندی سوالات

 



 

آپلود فايل بر روي سرور با استفاده از ASP.NET

   

آپلود فايل بر روي سرور با استفاده از ASP.NET

آپلود فايل بر روي سرور از طريق کلاينت، يکي از اعمالي است که برنامه نويسان ASP.NET گاها با آن مواجه مي شوند.

بدين منظور، از 2 کلاس در ASP.NET استفاده مي شود.

1) System.Web.UI.HtmlControls.HtmlInputFile
System.Web.HttpPostedFile (2

اولين کلاس نمايانگر يک کنترل HtmlInputFile است که شامل يک TextBox به همراه يک دکمه ي Browse به منظور انتخاب فايل آپلود شونده توسط کاربر مي باشد.

دومين کلاس، نمايانگر فايلي است که توسط کاربر انتخاب شده.
اين کلاس از اولين کلاس (HttpInputFile) نمونه سازي يا ايجاد مي شود.

کلاس HtmlInputFile:

اين کلاس داراي 4 خاصيت بوده که به ترتيب در زير شرح داده شده است:
Accept: ليستي از انواع فايل هايي که کاربر قادر به آپلود آنها بر روي سرور است.
MaxLength: حداکثر تعداد کاراکترهاي مجاز مسير انتخاب فايل.
PostedFile: اين خاصيت، يک شي از نوع System.Web.HttpPostedFile بر مي گرداند که نمايانگر فايل انتخاب شده توسط کاربر جهت آپلود است.
Width: اين خاصيت نمايانگر طول Text Box اي است که به وسيله HtmlInputFile نمايش داده مي شود.

به منظور استفاده از کنترل HtmlInputFile و آپلود فايل، مقدار خاصيت enctype فرم بايد برابر با multipart/form-data قرار گيرد.
مثال:

<form enctype="multipart/form-data" runat="server">
Select File to Upload:
<input id="uploadedFile" type="file" runat="server">
<input type=button id="upload"
value="Upload"
OnServerClick="Upload_Click"
runat="server">
</form>

کلاس HttpPostedFile:

اين کلاس نمايانگر فايلي است که توسط کاربر جهت آپلود بر روي سرور انتخاب شده.
اين کلاس داراي يک متد به نام SaveAs مي باشد که فايل انتخاب شده را بر روي سرور ذخيره مي کند. (در اين مقاله از روش ديگري بدين منظور استفاده شده است)
اين کلاس داراي 4 خاصيت بوده که به ترتيب در زير شرح داده شده است:
ContentLength: حجم فايل آپلود شده بر حسب بايت.
ContentType: نوع فايل آپلود شده: مثلا: "image/gif"
FileName: مسير فايل انتخاب شده توسط کاربر.
نکته مهم: تنها مرورگرهايي که بر روي ويندوز اجرا مي شوند، مقدار اين خاصيت را بر مي گردانند.
InputStream: يکي شي از نوع System.IO.Stream که به فايل آپلود شده اشاره کرده و اجازه کار با فايل را فراهم مي کند.

نکته مهم: خاصيت PostedFile کنترل HtmlInputFile، به فايلي که بر روي سرور آپلود شده اشاره مي کند. پس در صورتي که عمل آپلود با موفقيت انجام نشده باشد، اين خاصيت مقدار null را بر مي گرداند.
به شکل زير به سادگي مي توان از انجام موفقيت آميز عمل آپلود اطمينان حاصل کرد.

If ( HtmlInputFile1.PostedFile != null )
{
// Done
}
else
{
// Fail
}


پس از انتخاب فايل توسط کاربر، بايد يک اشاره گر به فايل انتخاب شده ايجاد گردد:
 
HttpPostedFile myFile = HtmlInputFile1.PostedFile;از آنجايي که قصد ذخيره محتويات فايل در يک آرايه (بافر) را داريم، بايد اندازه آرايه را برابر با اندازه فايل تعيين کنيم:
 
int nFileLen = myFile.ContentLength;
byte[] myData = new byte[nFileLen];

حال نوبت ريختن محتويات فايل در آرايه با استفاده از متد Read خاصيت InputStream مرجع شي HttpPostedFile است.
 
myFile.InputStream.Read(myData, 0, nFileLen);
تنها کار باقي مانده، ذخيره محتويات آرايه بر روي سرور است.
تابع زير اين کار را به راحتي با دريافت مسيري که قرار است فايل بر روي آن ذخيره شود و نام آرايه انجام ميدهد:
 
private void SaveFile(string strPath, ref byte[] Buffer)
{
FileStream myFile = new FileStream(strPath, FileMode.Create);

myFile.Write(Buffer, 0, Buffer.Length);

myFile.Close();
}

نکته مهم: به منظور آپلود فايل بر روي سرور، اجازه دسترسي Write Permission به پوشه اي که قرار است فايل در آن ذخيره شود، الزامي است.

جزئـیات تاپيک
      
نویسنده: Behrouz_Rad
ارسال شده توسط: Salar Khalilzadeh
منبع: barnamenevis.org
تاریخ ارسال: 1387/03/23 11:37 PM
تعداد مشاهده: 476
تعداد آرا: 0
امتیاز آرا:   از بدون رای

رای شما به این مطلب:

bookmark this
 

هیچ نظری برای این مطلب ارسال نشده است.
زبان سایت:

Copyright © 2009 SoftProjects.org | About | Valid XHTML | CSS