2014-05-09 23 views
0

我嘗試上傳的圖像使用MVC4,所以我創建包含輸入文件由用戶選擇文件視圖:上傳圖片引起保存一個無效的圖像

<div class="editor-label"> 
     @Html.LabelFor(model => model.ImageUrl) 
    </div> 
    <input id="ImageUrl" title="Upload a student image" type="file" name="ImageUrl" /> 

的ImageUrl持有文件的名稱,提交後我將此表到我的行動:

[HttpPost] 
[Authorize(Roles = "Admin")] 
public ActionResult Create(Student student) 

     { 
      student.RegisterDate = DateTime.Now.Date; 
      if (objcheck.CheckUserExistAlready(student.Email)) 
      {     

         string strLocation = HttpContext.Server.MapPath("~/App_Data"); 
         Request.SaveAs(strLocation + @"\" + student.ImageUrl,true); 
         obj.AddNewStudent(student); 
         obj.Save();      

      } 
      return RedirectToAction("Index", "Student"); 
     } 

此操作工作沒有任何錯誤,但它在保存無效圖像的App_Data !!!爲什麼?

我的模型:

public partial class Student 
    { 
     public Student() 
     { 
      this.Scores = new HashSet<Score>(); 
     } 

     public int Id { get; set; } 
     [Required(ErrorMessage = "نام را وارد کنید")] 
     [DisplayName("نام")] 
     public string Name { get; set; } 
     [Required(ErrorMessage = "نام خانوادگی را وارد کنید")] 
     [DisplayName("نام خانوادگی")] 
     public string LastName { get; set; } 
     [Required(ErrorMessage = "کد ملی را وارد کنید")] 
     [StringLength(10,ErrorMessage = "کد ملی باید ده رقمی باشد",MinimumLength = 10)] 
     [DisplayName("کد ملی")] 
     public string IntNo { get; set; } 
     [Required(ErrorMessage = "نام پدر را وارد کنید")] 
     [DisplayName("نام پدر")] 
     public string FatherName { get; set; } 
     [Required(ErrorMessage = "محل تولد را وارد کنید")] 
     [DisplayName("محل تولد ")] 
     public string BirthLocation { get; set; } 
     [Required(ErrorMessage = "تاریخ تولد را وارد کنید")] 
     [DisplayName("تاریخ تولد")] 
     public string Birthday { get; set; } 
     [Required(ErrorMessage = "آدرس عکس را وارد کنید")] 
     [DisplayName("تصویر")] 

     public string ImageUrl { get; set; } 
     [Required(ErrorMessage = "رشته را وارد کنید")] 
     [DisplayName("رشته")] 
     public string Major { get; set; } 
     [Required(ErrorMessage = "مقطع را وارد کنید")] 
     [DisplayName("مقطع")] 
     public string Degree { get; set; } 
     [Required(ErrorMessage = "شماره شناسنامه را وارد کنید")] 
     [DisplayName("شماره شناسنامه")] 
     public string IdentNo { get; set; } 
     [Required(ErrorMessage = "آدرس را وارد کنید")] 
     [DisplayName("آدرس")] 
     public string Address { get; set; } 
     [Required(ErrorMessage = "شماره همراه را وارد کنید")] 
     [DisplayName("شماره همراه")] 
     public string Mobile { get; set; } 
     [Required(ErrorMessage = "ایمیل را وارد کنید")] 
     [DataType(DataType.EmailAddress,ErrorMessage = "ایمیل نامعتبر است")] 
     [DisplayName("ایمیل")] 
     public string Email { get; set; } 
     [Required(ErrorMessage = "کلمه عبور را وارد کنید")] 
     [DataType(DataType.Password)] 
     [DisplayName("کلمه عبور")] 
     public string Password { get; set; } 
     [DisplayName("تاریخ ثبت نام ")] 
     public System.DateTime RegisterDate { get; set; } 
     [Required(ErrorMessage = "شماره دانشجویی را وارد کنید")] 
     [DisplayName("شماره دانشجویی/دانشجویی")] 
     public string StudentId { get; set; } 
     [Required(ErrorMessage = "وضعیت را وارد کنید")] 
     [DisplayName("وضعیت")] 
     public string State { get; set; } 

     public virtual ICollection<Score> Scores { get; set; } 
     public virtual ICollection<Comment> Comments { get; set; } 
    } 

我的形象,我的代碼保存:

enter image description here

最好的問候。

在此先感謝

+0

'student.ImageUrl'應該是'HttpPostedFileBase'類型,你不能讓這種類型的字符串。所以,你錯了,做錯了:) –

+0

分享你的模型和'student.ImageUrl'輸出 –

+0

@AliRızaAdıyahşi我分享了它 –

回答

1

型號:

public partial class Student 
{ 
    public Student() 
    { 
     this.Scores = new HashSet<Score>(); 
    } 

    public int Id { get; set; } 
    public HttpPostedFileBase ImageUrl { get; set; } 
    ... 

查看:(不要忘記enctype="multipart/form-data"

@using (Html.BeginForm("Create", "Home", FormMethod.Post, 
    new { id = "form", enctype="multipart/form-data" })) 
{ 
    <div class="editor-label"> 
     @Html.LabelFor(model => model.ImageUrl) 
    </div> 
    <input id="ImageUrl" title="Upload a student image" type="file" name="ImageUrl" /> 
    ... 

控制器:

... 
student.ImageUrl.SaveAs("your path here"); 
... 

Refrences:

file upload mvc

files upload

+0

public HttpPostedFileBase ImageUrl {get;組; },C#可以解析HttpPostedFileBase,我應該添加哪些引用? –

+0

而獲勝者是... http://msdn.microsoft.com/en-us/library/system.web.httppostedfilebase.aspx - System.Web – Jakub