[C#] 上傳的HttpPostedFile為空


Answers

這並不能解釋為什麼你的參數是null,但你可以直接挖掘請求。 儘管如此,這可能不是最“MVC”的方式。 在你的方法體中試試這個:

var upload = Request.Files["postedFile"]
if (upload.ContentLength > 0)
{
  // Do whatever
}

為了更“MVC”,你可以將你的控制器中的代碼放到IModelBinder實現中,並使用自定義對像作為你方法的參數。 這篇Scott Hanselman博客文章展示了實施定制ModelBinder的步驟。

Question

在視圖上:

<% =Html.BeginForm("About", "Home", FormMethod.Post, new {enctype="multipart/form-data "})%>
  <input type="file" name="postedFile" />
  <input type="submit" name="upload" value="Upload" />
<% Html.EndForm(); %>

在控制器中,有這樣的東西:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult About(HttpPostedFile postedFile)
{
    //but postedFile is null 
    View();
}

在About()中, postedFile為null。 我如何上傳文件?




“multipart / form-data”之後的空白是真正的問題...




此外,我發現文件上傳所在的表單聲明必須始終存在

new {enctype="multipart/form-data"}



<form id="Form1" method="post" encType="multipart/form-data" runat="server">

encType="multipart/form-data"到表單中。




用這個

public ActionResult Upload(HttpPostedFileBase excelfile)

HttpPostedFileBase更改HttpPostedFileBase




你正在使用哪個版本的MVC? 現在與RC候選人,我嘗試使用HttpPostedFile,我得到了“沒有空白的構造函數錯誤。” 我不得不使用HttpPostedFileBase。

但更重要的是,您正在運行的是MVC的版本,具體取決於版本,您檢索張貼文件的方式將有所不同。