使用MVC 4上传图像会导致保存无效图像

时间:2014-05-09 08:20:24

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我尝试使用 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

最好的问候。

提前致谢

1 个答案:

答案 0 :(得分: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