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

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

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

یکشنبه, 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);
}

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

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

با سلام

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

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

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

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

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

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

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

یکشنبه, 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());
    }
   
}

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

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

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

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

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

کسانی که از این پست تشکر کرده اند : zzzhhh70,
چهارشنبه, 29 خرداد 1398 09:10

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

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید