SalarSoftwares logo

خوش آمدید. در این سایت می توانید ابزارهای دلفی و نرم افزارها را دریافت کنید.

صفحه اصلی | مقالات | سوال و جواب | Downloads | Beeper help | جستجو | تصاویر برنامه ها | تبلیغات | تماس با ما | وبلاگ شخصی

آپلود فايل بر روي سرور با استفاده از 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
منبع: www.barnamenevis.org
 

Titles

صفحه اصلی
Up
سوال و جواب
Downloads
Beeper help
جستجو
تصاویر برنامه ها
تبلیغات
تماس با ما
وبلاگ شخصی

جستجو در سایت

لینک سایر سایت ها


 صفحه اصلی | مقالات | سوال و جواب | Downloads | Beeper help | جستجو | تصاویر برنامه ها | تبلیغات | تماس با ما | وبلاگ شخصی
در صورت بروز هر گونه مشكل در استفاده از نرم افزار هاي اين سايت, مشكل را با مدير اين سايت در ميان بگذاريد.

Creative Commons License
This work is licensed under a Creative Commons Attribution 2.5 License.

آخرين به روز رسانی: آمار بازدید: