PDA

View Full Version : آپلود فایل با Ajax.BeginForm



ramin149
شنبه 09 شهریور 1392, 14:49 عصر
سلام من یک فورم ajax طراحی کردم که داخل آن فورمم یک فایل آپلود قرار دادم . وقتی با فایل آپلود ، فایلی انتخاب می کنم و دکمه submit را فشار می دهم ، مدل مورد نظر در Action مساوی با null می باشد و هیچ اطلاعاتی از فایل ارسال شده نمی شه .
برای حل این مشکل چه کاری باید انجام بدم ؟؟؟

hakim22
شنبه 09 شهریور 1392, 19:06 عصر
اصولا این کار با Ajax.BeginForm ممکن نیست. این Helper از jQuery.unobtrusive-ajax.js استفاه میکنه که قابلیت ارسال فایل نداره.
اول بگم که راههای مثل استفاده از Uploadify یا فلش و ... وجود داره.

راهی که کاملا جاوا اسکریپتی باشه فقط از HTML5 برمیاد و مرورگر IE9 پشتیبانی نمیکنه و در کروم یا IE10 میشه یکاریش کرد!
دوتا قابلیت در HTML5 هست که میتونه به شما کمک کنه . اول FileReader است که وقتی شما فایلها رو انتخاب میکنید محتوای آنهارو درون یک آرایه میریزه و از طریق مدیریت رویداد onLoad میشه یکی یکی فایلها رو خوند و درون یک آرایه ی جانبی ذخیره کرد.

مرحله ی بعد کنترل رویداد Submit در فرم است. یک فرم معمولی با Html.BeginForm بسازید. بعد در رویداد Submit باید با e.preventDefault جلوی عملکرد پیش فرض رو گرفت.

حالا میتوانید با دستور each.$ هر کدام از آیتم های درون آرایه رو بخونید و به یک Ajax.$ منتقل کنید. به صورت زیر :


$.ajax({
type: "POST",
url: url,
data: data,
success: success,
dataType: dataType
});


و حلقه تک تک فایل هارو به سرور به صورت Ajax منتقل میکنه. در اینجا از قابلیت FormData در HTML5 استفاده میشه که باز در مرورگر IE پشتیبانی نمیشه.

hakim22
یک شنبه 10 شهریور 1392, 13:23 عصر
به این لینک سر بزنید :
آموزش آپلود عکس با استفاده از AJAX در ASP.MVC4 به همراه پروژه ی نمونه (http://www.p30ton.blogfa.com/post/42)