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

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

کاربر سایت

zzzhhh70

عضویت از 1394/05/14

مشکل در آپلود فایل

  • یکشنبه 26 خرداد 1398
  • 12:19
تشکر میکنم

 سلام  دوستان . من یک فرم ثبت نام  ایجاد کردم که در آن هر کاربر میتونه  اطلاعات اش همراه با   یک فایل  آپلود را به سمت  سرور ارسال نماید .  با  وجود اینکه فیلد آپلود رو  Required   تعریف نکردم   تازمانی که  فایلی برای آپلود انتخاب نشود   فرم  ارسال نمیشود .  به نظرم  مشکل از کد های کنترلر هست،

 کد هایی  که در کنترلر نوشتم  اینه :

        public ActionResult Create([Bind(Include = "ID,FullName,Mellicode,PostTime,Mobile,Telephone,Email,Age,Gender,Address,Postalcode,LastEducationalCertificate,FieldOfStudy,JobExperience,MaritalStatus,Comment,FilePathName,Invitation,Invalidity,Recruitment")] RegisterForm registerForm, HttpPostedFileBase UploadFile)

{


 var myUniqueFileName = string.Format(@"{0}.txt", Guid.NewGuid());


            if (ModelState.IsValid)
            {
                 string strFileExtension = System.IO.Path.GetExtension(UploadFile.FileName).ToUpper();

            
                string strContentType = UploadFile.ContentType.ToUpper();
              
                        if (UploadFile.ContentLength > 100 * 1024)
                    {
                               return View("Error");
                }

                else if(UploadFile.ContentLength<100*1024 && UploadFile !=null) 
                {
                    registerForm.FilePathName = myUniqueFileName + UploadFile.FileName;
                            
                    if (System.IO.Directory.Exists(strPath) == false)
                    {
                        System.IO.Directory.CreateDirectory(strPath);
                    }

                    string strPathName =
                        string.Format("{0}\\{1}", strPath, registerForm.FilePathName);

                    UploadFile.SaveAs(strPathName);
                }
             
                db.Registers.Add(registerForm);
                db.SaveChanges();
                return RedirectToAction("Back");
            }
            return View(registerForm);
}

 ممنون میشم  بگید  این کدها رو  چه تغییر  باید بدم  تا  بتونم  فرم رو بدون آپلود فایل  ارسال کنم .

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

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

محمد قاری

عضویت از 1395/02/07

  • یکشنبه 26 خرداد 1398
  • 17:09

با سلام

شما گفتید که فرم ارسال نمیشه

پس مشکل از سمت ویو هست

کد های ویو را قرار دهید

کاربر سایت

zzzhhh70

عضویت از 1394/05/14

  • یکشنبه 26 خرداد 1398
  • 17:15

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

اما وقتی که  فایلی رو آپلود  نمیکنم فرم  ارسال نمیشود با وجود اینکه   این فیلد آپلود required  نیست.

  ضمنا  ممنون میشم زودتر  تاپیک ها رو بررسی کنید .

کاربر سایت

zzzhhh70

عضویت از 1394/05/14

  • یکشنبه 26 خرداد 1398
  • 17:21

 قسمت   view  آپلود

                    <div class="form-group">
  @Html.LabelFor(model => model.FilePathName, htmlAttributes: new { @class = "control-label col-md-10" })
                        <div class="col-md-10">
                            @Html.Upload("UploadFile", new { htmlAttributes = new { @class = "form-control demoInputBox ", type = "file", runat = "server" } })
          @Html.ValidationMessageFor(model => model.FilePathName, "", new { @class = "text-danger" })
                        </div>
                    </div>

                </div>

برای آپلود هم  از  extention Method  زیر استفاده  شده است :

using System.Linq;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;

public static class UploadHelper
{
    public static MvcHtmlString Upload(this HtmlHelper helper, string name, object htmlAttributes = null)
    {
        //helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(ExpressionHelper.GetExpressionText(expression))
        TagBuilder input = new TagBuilder("input");
        input.Attributes.Add("type", "file");
        input.Attributes.Add("id", helper.ViewData.TemplateInfo.GetFullHtmlFieldId(name));
        input.Attributes.Add("name", helper.ViewData.TemplateInfo.GetFullHtmlFieldName(name));
        input.Attributes.Add("class", "required");


        if (htmlAttributes != null)
        {
            var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
            input.MergeAttributes(attributes);
        }

        return new MvcHtmlString(input.ToString());
    }
   
}

کاربر سایت

zzzhhh70

عضویت از 1394/05/14

  • یکشنبه 26 خرداد 1398
  • 17:23

 من میخوام از این روش استفاده کنم   اگه  از    دوستان کسی  میتونه ممنون میشم جواب بده

کاربر سایت

consciouscores

عضویت از 1397/11/30

  • چهارشنبه 29 خرداد 1398
  • 02:26

اگه از MetaData هم استفاده کردی

اونجا رو هم چک کن شاید اونجا اجباریش کرده باشی.

کاربر سایت

zzzhhh70

عضویت از 1394/05/14

  • چهارشنبه 29 خرداد 1398
  • 09:10

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

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

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

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

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