1
除了一些簡單的標量數據之外,我還需要保存幾個文件。有沒有辦法讓我驗證文件是否與表單數據的其餘部分一起發送?我試圖使用[Required]
屬性,但它似乎沒有工作。有沒有辦法驗證MVC 2中傳入的HttpPostedFilebase文件?
除了一些簡單的標量數據之外,我還需要保存幾個文件。有沒有辦法讓我驗證文件是否與表單數據的其餘部分一起發送?我試圖使用[Required]
屬性,但它似乎沒有工作。有沒有辦法驗證MVC 2中傳入的HttpPostedFilebase文件?
以下爲我工作。
型號:
public class MyViewModel
{
[Required]
public HttpPostedFileBase File { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel());
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var fileName = Path.GetFileName(model.File.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data"), fileName);
model.File.SaveAs(path);
return RedirectToAction("Index");
}
}
查看:
<% using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) { %>
<input type="file" name="file" />
<%= Html.ValidationMessageFor(x => x.File) %>
<input type="submit" value="OK" />
<% } %>
你如何驗證特定的文件類型?我只允許'.jpg'。 – 2013-01-22 12:37:15
您可以編寫自定義驗證屬性,如圖所示:http://stackoverflow.com/a/6388927/29407它將檢查上傳的文件是否爲指定類型的圖像。在我的示例中,我展示瞭如何使用PNG文件完成此操作,但您可以非常輕鬆地調整此代碼並使其更加通用,以接受任何其他圖像類型。 – 2013-01-22 12:40:16