مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

alibahman47

عضویت از 1395/11/13

آپلود تصویر بصورت ایجکسی - نمایش نوار پیشرفت آپلود و چند سوال مرتبط

  • دوشنبه 6 شهریور 1396
  • 21:53
تشکر میکنم

درود

توضیح :

من برای بخش اضافه کردن محصول به فروشگاه از یک تصویر Index برای نمایش در صفحه اول و هشت تصویر برای گالری استفاده میکنم

که کاربر در صفحه اضافه کردن محصول جدید تمام مشخصات و این تصاویر را انتخاب میکند و در زمان پست شدن به سمت کنترولر در رویداد [HttpPost] دستورات اضافه کردن مشخصات محصول و بعد ذخیره کردن عکس ها  انجام میگیره و در صورت مموفقیت آمیز بودن پیغام مناسب نمایش می یابد.

این رو هم بگم که کل موراد پست شدن سمت کنترولر و برگشت پیغام ها بصورت Ajax انجام میشه !

مشکل :

برای زمانی که پروژه روی هاست بره آپلود کردن این 9 تا عکس ( عکس های گالری حداکثر ممکنه تا 3 مگابایت باشن) خیلی خیلی زمان میبره و کاربرمدیر مدت زیادی رو باید منتظر بمونه تا کل این فایل ها آپلود بشن بعد پیغام موفقیت نمایش میابد و اگه زمان انتظار زیاد باشه ممکنه فکر کنه که اصلا کاری صورت نگرفته !

را ه حل من :

برای این مشکل من بنظرم باید همون زمان که عکس رو از تو کامپیوتر انتخاب میکنه و بعد پیشنمایشش نشون داده میشه یه گزینه Upload براش بزارم که همون موقع فایل رو آپلود کنه .

و میخوام برای هر کدوم از تصاویر یک Ajax.form بزارم که بازدن دکمه Uplad به سمت کنترولر بره و عکس رو آپلود کنه .

سوالات ؟

1 - بنظرتون این شیوه کار صحیحه ؟

2 - برای آپلود فایل من از یک Html.Helper که بصورت دستی نوشته شده استفاده میکنم :

که متاسفانه در سمت سرور وقتی میخوام خالی یا پر بودنش رو چک کنم حتی موقعی که یک عکس انتخاب شده دستور If که خالی بودن رو چک میکنه اجرا میشه و پیغام نمایش پیدا میکنه :

البته ذخیره شدن و همه چیز درست انجام میشه , فقط شرطی که گذاشتم اگه UploadGalleryImage1 == null بود اشتباهی اجرا میشه و پیغام رو نمایش میده.

اگه Html.Helper یا مورد بهتری رو برای آپلود کردن عکس سراغ دارید لطفا معرفی کنید ؟

3 - چطوری زمانی که عکس در حال آپلود شدنه نوار پیشرفت اون رو نشون بدم - که کاربر بفهمه عکس در حال آپلود شدنه ؟

اگر sample ی برای Asp.net Mvc5 مثل این نمونه سراغ دارید لطفا معرفی کنید - اگه کد های سمت سرور (asp.net mvc) هم نوشته شده باشه خیلی هم بهتر.

مدیر های گرامی خیلی ببخشید زیاد نوشتم , امیدوارم منظورم رو رسونده باشم ,  عجله ای ندارم ,هر وقت فرصت کردید پاسخ رو بدید.

پاسخ های این پرسش

تعداد پاسخ ها : 21 پاسخ
کاربر سایت

alibahman47

عضویت از 1395/11/13

  • دوشنبه 6 شهریور 1396
  • 23:51

خوب شیوه بهتر چیه ؟

من کل موضوع رو توضیح دادم که اگه خوب نیست یک شیوه بهتر رو پیشنهاد بدین .

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • دوشنبه 6 شهریور 1396
  • 23:59

بهتره به صورت کلی آپلود رو انجام دهید یا این که به صورت یک صف عمل کنید و فرآیند هر آپلود را نمایش دهید و پس از تمام شدن آپلود یک عکس، عکس بعدی را آپلود کنید و این که عمل میتواند در سمت client صورت بگیرد لینک هایی که قرار دادم میتوانند مفید باشند.

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • پنجشنبه 9 شهریور 1396
  • 12:25

ممنون ,الان موارد پیشنهادی رو مشاهده کردم - مورد دوم که برای asp.net webform آموزش داده(اگه درست متوجه شده باشم) ولی مورد اول Mvc بود و بنظر خوب میاد ولی خوب اون UserInterface لازم رو نداره .

تا حالا Kendu Ui رو به پروژه اضافه نکردم چون نمیخواستم حجم پروژه و صفحات بالا بره ,

ولی برای همین مورد اول که شما معرفی کردید لازمه که تعدادی dll و اسکریپت رو اضافه کرد و در کل همون حجم به پروژه اضافه میشه .

نظر شما چیه از Kenu Ui استفاده کنم بهتره یا نه ؟

این لینک مربوط به موارد Kedu Ui هست ,درسته ؟

ظاهرش که بنظر عالی میاد

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 9 شهریور 1396
  • 12:36

سنگینه این کامپوننت و ممکنه مشکل کپی رایت بر بخورید

از نمونه های jquery استفاده کنید بهتره

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • پنجشنبه 9 شهریور 1396
  • 16:23

ASP.NET Upload control, ASP.NET File Upload, Multiple File Upload, File Uploading In ASP.NET, ASP.NET File Uploading, ASP.NET Upload Example

قسمت Mvc :

http://s9.picofile.com/file/8305166042/mvc4_cs.rar.html

1 -  این مورد رو من برسی کردم با Debug هم جلو رفتم فایل ها رو به سمت کنترولر نمیفرسته ! اگه من 8 تا عکس رو انتخاب کنم چطوری در سمت کنترولر دریافتشون کنم تا بتونم ذخیرشون کنم ؟

2 -  بعد این نوار پیشرفت دانلود که نشون میده واقعا روند دانلوده ؟ چون من یه فایل ویدیو رو پسوندش رو به jpg تغییر دادم و انتخابش کردم بازهم نوار پیشرفت تا 100% رفت و بعد خطا داد - یعنی اصلا کاری به روند دانلود نداره و 0 تا صد رو تویه ثانیه میره .

نوار پیشرفت رو باید زمان سیو شدن روی سرور یا همون هاست نشون بده - اون مثلا 20 یا 40 ثانیه که طول میکشه تا عکس روی هاست آپلود بشه .

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • پنجشنبه 9 شهریور 1396
  • 18:27

میتونید به صورت زیر فایل هایی که به کنترلر شما ارسال می شود را  دریافت کنید:

foreach (string fileName in Request.Files)
{
    HttpPostedFileBase file = Request.Files[fileName];

    ...
}

روی هاست تست کردید ؟

چه خطایی دریافت کردید؟

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • پنجشنبه 9 شهریور 1396
  • 19:45

نه روی هاست تست نکردم , داخل همین Visoul Studio تست کردم .

مشکل اینجاست که این روند پیشرفت آپلود که نوشن میده مربوط به زمانی که برای سیو شدن صرف میشه نیست و زمان انتخاب فایل در سمت کاربر نمایش داده میشه و برای همه عکس ها یکسانه !

این تست رو ببینید :
http://s8.picofile.com/file/8305183218/Test.mp4.html

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • پنجشنبه 9 شهریور 1396
  • 20:12

فکر کنم روی سرور درست کار کنه

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • پنجشنبه 9 شهریور 1396
  • 22:18

مهندس این مورد برای asp.net Mvc قابل استفاده نیست ؟

https://github.com/blueimp/jQuery-File-Upload

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • پنجشنبه 9 شهریور 1396
  • 22:35

از امروز صبح فکر کنم بالای بیست مورد رو دیدم همشون در همون موقع آپلود در سمت کلاینت اون پروگس بار پیشرفت دانلود رو نشون میدن و ربطی به زمان آپلود اصلی و سیو کردن نداره!

میشه یکم توضیح بدید چرا اینطوریه ؟ من کلا گیج شدم !

بنظرم اگه در زمان اجرای دستور Save تصاویر در کنترولر یه Lazyloading نشون بدم خیلی مفهموی تر باشه .

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • پنجشنبه 9 شهریور 1396
  • 22:44

این که روند پیشرفت رو نشون بدید به سرور مربوط نمیشه باید تو client کنترل بشه ، و این که حتما روی سرور تست کنید. اگر مثل ها و سوال های توی نت رو ببینید اکثر سوال ها روی کلاینت جواب دادن نه سرور این مخزنی که فرستادید خوبه ازش استفاده کنید و دارای مستندات می باشد : Basic plugin · blueimp/jQuery-File-Upload Wiki

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • جمعه 10 شهریور 1396
  • 08:57

این مورد در پروژه فروشگاهی Iris Store استفاده شده :

این پروژه :

من خواستم سروس رو اجرا بگیرم خطا های زیر رو میده :

امکانش هست یه راهنمایی بفرمایید ؟

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • جمعه 10 شهریور 1396
  • 09:04

افزونه AutoT4 و RazorGenerator را نصب کنید :

Razor Generator - Visual Studio Marketplace

AutoT4 - Visual Studio Marketplace

پس از آن دستورات زیر را اجرا کنید کنید:

Enable-RazorGenerator
Update-Package

یک بار پروژه را build و clean کنید و سپس آن را restart کنید.

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • جمعه 10 شهریور 1396
  • 09:16

ممنون خطاهای قبلی رفع شد !

منتهی دستور

Enable-RazorGenerator

کار نکرد :

الان خطا های زیر رو میده :

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • جمعه 10 شهریور 1396
  • 09:21

یه نکته مهم پوشه بندی های این پروژه هست :

علت این پوشه بندی ها چیه ؟ ربطی به CodeFirst داره ؟

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • جمعه 10 شهریور 1396
  • 09:25

اگر فایل های cshtml شما به دو بخش تقسیم شده است t این ارور را نادیده بگیرید.

و این که بر روی T4MVC.tt کلیک راست کرده و run custom tool را انتخاب کنید.

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • جمعه 10 شهریور 1396
  • 09:32

منظورتون پوشه های داخل Web است یا خیر؟

اگر بله ، خیر این پوشه ها شامل ActionFilter ها و کلاس های مربوط به IOC و AutoMapper و یک سری کلاس سفارشی می باشد.

پروژه Datalayer مربوط به EF می باشد.

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • جمعه 10 شهریور 1396
  • 09:40

در کد نویسی برای شما قانونی وجود ندارد که بگوید شما چه کار باید بکنید و چه کار نباید بکنید این که در پروژه خودتان پوشه های جدید ایجاد کنید و کلاس ها و قسمت های سفارشی خودتان بنویسید بر عهده شماست. و این مشکل در اکثر برنامه نویس ها است که ذهن خود را نسبت به کارشان محدود می کنند،

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • جمعه 10 شهریور 1396
  • 10:08

این مورد رو هم انجام دادم درست نشد.

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • جمعه 10 شهریور 1396
  • 11:23

همه جا ازین مورد Mvc. ایراد میگیره :

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)