我尝试使用 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; }
}
我的代码保存的图片:
最好的问候。
提前致谢
答案 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:强>