معرفی FileUpload

مایکروسافت در دات نت ۲ ، یک کنترل متحول شده برای قرار دادن فایلها از روی کلاینت بر روی سرور به ASP.net اضافه کرد . این کنترل شاید در نگاه اول با همان معادل html ی اش مشابه باشد اما قدرت بیشتری دارد . در زیر به بررسی بیشتر این کنترل خواهیم پرداخت. در آینده ای نزدیک نحوه کار با این کنترل و البته سفارشی سازی آن را نیز خواهم آورد .

برای ایجاد یک FileUpload باید به این طریق عمل کرد .

<asp:FileUpload id=”FileUpload1″ runat=”server” />

برخی از خصوصیات مفید این ابزار عبارتند از :

  1.    FileUpload1.FileName :- نام و مسیر کامل فایل را به شما می دهد
  2.    FileUpload1.PostedFile.FileName :- صرفا نام فایل را می دهد
  3.    FileUpload1.PostedFile.ContentLength :- سایز و اندازه فایل انتخاب شده را در واحد بایت می دهد
  4.    FileUpload1.PostedFile.ContentType :-  نوع فایل را مشخص می کند مثلا :  “image/gif”
ظاهر این ابزار در مرورگرهای مختلف متفاوت است

ظاهر این ابزار در مرورگرهای مختلف متفاوت است

یکی از مشکلاتی که معمولا در آپلود کردن فایلها وجوددارد محدودیت سایز فایل است و انتخاب فایلهای بزرگ برای کاربران محدودیت دارد. این مشکل در اینجا هم وجود دارد و اگر شما از FileUpload استفاده کنید فایلهایی را با حداکثر اندازه ۴ مگابایت می توانید بر روی سرور آپلود کنید . برای اینکه این محدودیت را کنار بگذارید و فایلهای بزرگتری را آپلود کند باید یک تغییر در فایل Web.Config برنامه تان، به شکل زیر بدهید

<system.web>
<httpRuntime executionTimeout=”1000″ maxRequestLength=”1048576″/>
</system.web>

چنانکه در بالا ملاحظه می کنید خصوصیت maxRequestLenght برای مشخص کردن حداکثر سایز مجاز برای آپلود در نظر گرفته شده . عدد وارد شده در بالا هم به کاربر اجازه می دهد تا فایلهایی با اندازه یک گیگابایت را آپلود کنند . خصوصیت Timeout هم که احتیاج به معرفی ندارد و کاملا گویا است . فقط توجه داشته باشید که این زمان به ثانیه محاسبه می شود و بطور پیش فرض دات نت مقدار ۹۰ (‌نود ) ثانیه را در آن قرار داده ( برای فایلهای ۴ مگابایتی، توجه کنید که این زمانیست که عملیات در ASP اجازه دارد تا به اتمام برسد و اگر ارسال فایلها تا انتهای این زمان انجام نشد، ASP عملیات را خاتمه خواهد داد ( عملیات ناقص می ماند )

هنگام استفاده از این ابزار توجه کنید که در برنامه نهایی بر روی IIS قرار می گیرد باید به folder ( پوشه ای ) که قرار است فایلها در آن آپلود شود دسترسی execute بدهید و از وجود پوشه اطمینان حاصل کنید . اگر این پوشه ReadOnly باشد و شما دسترسی execute را در IIS ست نکرده باشید کاربران هنگام آپلود با خطا روبرو می شوند .

     نکته : این ابزار برای قرار دادن فایلها بر روی سرور احتیاج به یک PostBack دارد.

     نکته : اگر از این ابزار در Asp.net Ajax استفاده می کنید توجه کنید که باید برای آن یک Trigger با قابلیت PostBack تعریف کنید .

در اینجا یک نمونه خوب از FileUpload وجود دارد توصیه می‌کنم ملاحظه کنید.

همانطور که در بالا گفتم هنگام استفاده از این ابزار ، جهت قرار دادن فایلها بر روی سرور به یک PostBack احتیاج است که این امر زیاد برای طراحان وب خوب نیست و یکی از معضلات پیاده سازی محسوب می شود . در آینده سعی می کنم روشی را معرفی کنم که این PostBack را از دید کاربر مخفی کند و مثلا چیزی شود شبیه به Attachment ها در Gmail و سایر برنامه های مشابهی که ظاهرا هنگام قراردادن فایلها بر روی سرور هیچ PostBack ی بر روی صفحه نمی زنند .

همچنین مشکل دیگری که وجوددارد ظاهر این ابزار است که تقریبا تحت هیچ شرایطی نمی توان آن را سفارشی کرد . مثلا دکمه جلوی TextBox که متن Browse در آن قرار دارد بسیار بد شکل است و متن ن قابل تغییر نیست . در مطالب بعدی راهی هم برای حل این مشکل آورده خواهد شد.

در مطالب بعدی کدهای مرتبط با نحوه آپلود فایلها بر روی سرور را هم خواهم آورد .

2 Responses to معرفی FileUpload

  1. Masoud says:

    خوب یه سوال!

    یعنی شما یک فایل آپلود خصوصی می خواهید درست کنید یا از روش های iframe و Ajax … استفاده کنید؟

    راستی ،خسته نباشید.

  2. از روش iframe استفاده می کنم

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: