سفارشی سازی آپلود فایل با کمک کنترل FileUpload

سفارشی سازی آپلود فایل با کمک کنترل FileUpload

برای طراحان سایت و برنامه نویسان وب گاهاً این نیاز پیش می آید که فایلی را از کاربر دریافت کرده و در سرور ذخیره کنند. برای این منظور از کنترل فایل آپلود (FileUpload) استفاده می شود. این کنترل به افراد کمک می کند که فایل های خود را با هر حجم و فرمتی بر روی سرور منتقل کنند اما در این صورت فضای محدود سرور سریعاً اشتغال شده و نیاز به سرورهای نامحدود مشکل گشای کار است که اغلب به علت هزینه های هنگفت از این نوع سرور استفاده نمی کنند. بنابر این ما به شما نشان می دهیم که چگونه با استفاده از این کنترل به شکل ساده و بدون نیاز به سرورهای نامحدود فایل های خود را از کاربران دریافت و ذخیره نمائید. ابتدا قبل از هر چیز یک نکته قابل ذکر است که علاوه بر کدنویسی یک راه دیگر نیز برای محدود کردن کاربران قرار دارد. با استفاده از تنظیماتی که در زیر قرار داده شده است، شما می توانید با تغییر فایل Web.config موجود در پروژه خود، افراد را از بارگزاری فایل های حجیم عاجز و محدود نمایید.

<httpRuntime
maxRequestLength="1024"
executionTimeout="180"/>

در کد نوشته شده دو پارامتر وجود دارد که به تفصیل شرح خواهیم داد اما قبل از آن گفتنی است که پارامترهای دیگری نیز وجود دارد که ما در اینجا به آنها نیازی نداریم. اولین پارامتر maxRequestLength می باشد که یک مقدار عددی بر حسب کیلوبایت(KB) میگیرد و نشان دهنده حداکثر حجم مجاز برای بارگزاری فایل است و پارامتر دوم executionTimeout می باشد. این پارامتر برای محدود کردن زمان بارگزاری می باشد که بر حسب ثانیه محاسبه می شود. اگر مقدار این پارامتر کم درنظر گرفته شود و حجم فایل زیاد باشد در حین زمان بارگزاری عملیات قطع و ناموفق انجام می شود پس بهتر است که این پارامتر را با توجه به حداکثر حجم مجاز و سرعت اینترنت تنظیم نمائید.

اما روش اصلی و مهم ترین بخش کار ، بارگزاری فایل و تعیین نوع فایل و حداکثر حد مجاز ارسال و پارامترهای مهم دیگر است. ابتدا به کد زیر توجه فرمائید :

آپلود فایل با پارامترهای سفارشی

Dim path, filename As String
path=Server.MapPath(".") + "\\"
Dim validext() As String=New String(){".pdf", ".zip", ".rar"}
If (Array.IndexOf(validext, System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower) < 0) Then
MSG.Text="فرمت فایل مجاز نمی باشد"
Return
End If
If (FileUpload1.PostedFile.ContentLength / 1024 > 500) Then
MSG.Text="حجم فایل مجاز نمی باشد"
Return
End If
filename=System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName)
While System.IO.File.Exists(path + filename)
filename="1" + filename
End While
FileUpload1.PostedFile.SaveAs(path + filename)

آپلود فایل با پارامترهای سفارشی

string path;
string filename;
path=Server.MapPath(".") + "\\";
string[] validext=new string[]{".pdf",".zip",".rar"};
if (Array.IndexOf(validext, System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower) < 0){
MSG.Text="فرمت فایل مجاز نمی باشد";
return;}
if (FileUpload1.PostedFile.ContentLength / 1024 > 500){
MSG.Text="حجم فایل مجاز نمی باشد";
return;}
filename=System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);
while (System.IO.File.Exists(path + filename)){
filename="1" + filename;}
FileUpload1.PostedFile.SaveAs(path + filename);

کدی که مشاهده کردید بعد از اینکه کاربر بر روی دکمه ای که جهت ثبت اطلاعات قرار داده شده است کلیک کرد اجرا می شود به این صورت که ابتدا مسیر سرور را تشخیص داده و در متغییری با نام path قرار می دهد. سپس یک آرایه تعریف میکنیم و فرمت های مجاز را در آن قرار می دهیم و با یک دستور شرطی چک می کنیم که آیا فرمت فایلی که قرار است ارسال شود مجاز است یا خیر. در غیر این صورت یک پیغام مناسب چاپ کرده و با استفاده از دستور return از ادامه ی اجرای عملیات جلوگیری می کنیم. اما اگر فرمت فایل مجاز باشد نوبت به بررسی حجم فایل میرسد و قبل از بررسی آن می بایست حجم فایل ارسالی را بر عدد 1024 تقسیم کنیم که عدد بدست آمده از بایت به کیلوبایت تبدیل شود زیرا مقایسه عدد بر حسب کیلوبایت راحت تر از بایت می باشد. بعداز مقایسه حجم فایل و در صورت صحیح بودن مقدارها نوبت به بررسی نام فایل می رسد. نام فایل را بر این اساس بررسی می کنیم که فایلی که قرار است بر روی سرور قرار داده شود همنام با فایل های سرور نباشد و جایگزین فایل موجود بر سرور نشود بدین منظور با حلقه while تمامی فایل ها را بررسی کرده و در صورت یافتل فایلی همنام، عددی به نام فایل ارسالی اضافه می کنیم و سرانجام فایل را بر روی سرور ذخیره می نمائیم.



نظرات کاربران



عبارت امنیتی : حاصل 3 × 3 می شود :
متن پیام :