[MVC 5] 上傳檔案時 HttpPostedFileBase 總是 Null
Controller 原始碼
[HttpPost]
public ActionResult UploadFile(HttpPostedFileBase file)
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
}
return new HttpStatusCodeResult(System.Net.HttpStatusCode.OK);
}
View 原始碼 (ps. 有用了dojo去美妝)
@using (Html.BeginForm("UploadFile", "note_my", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input name="file" id="file" type="file" data-dojo-type="dojox.form.Uploader" label="Select Some Files"/>
<input type="submit" label="Submit" data-dojo-type="dijit.form.Button" />
}
可能會引發的錯誤包含
1. 巢狀的 Form, 要檢查一下 _Layout.cshtml 裡頭是不是已經設定在樹狀的上層中.
2. file element 未宣告 name 或是 name 的值與參數的命名不相符
ps. 如果用dojo 在file element 加上屬性 multiple="true" , 亦會發生null的錯誤