Reputation: 7299
I try to upload an image using MVC4 so i create a view that holds an input file to select file by user :
<div class="editor-label">
@Html.LabelFor(model => model.ImageUrl)
</div>
<input id="ImageUrl" title="Upload a student image" type="file" name="ImageUrl" />
The ImageUrl holds the name of file ,after submit i send this form to my action:
[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");
}
This action works without any errors ,but it save an invalid image in App_Data!!!why ?
My Model:
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; }
}
My image that saved by my code:
Best regards.
Thanks in advance
Upvotes: 0
Views: 416
Reputation: 15876
Model:
public partial class Student
{
public Student()
{
this.Scores = new HashSet<Score>();
}
public int Id { get; set; }
public HttpPostedFileBase ImageUrl { get; set; }
...
View: (dont forget 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" />
...
Controller:
...
student.ImageUrl.SaveAs("your path here");
...
Refrences:
Upvotes: 1