0

私は単に MVC3 経由でファイルをアップロードしようとしていますが、これは私のビューです:

@{
    ViewBag.Title = "Pic";
    Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml";
}

@using (Html.BeginForm("FileUpload", "Blog", FormMethod.Post))
{
    <input name="uploadFile" type="file" />
    <input type="submit" value="Upload File" />
}

これが私の行動です:

public ActionResult FileUpload()
        {
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult FileUpload(HttpPostedFileBase uploadFile)
        {
            if (uploadFile.ContentLength > 0)
            {
                string filePath = Path.Combine(HttpContext.Server.MapPath("../Uploads"),
                                               Path.GetFileName(uploadFile.FileName));
                uploadFile.SaveAs(filePath);
            }
            return View();
        }

私のコードの何が問題なのですか?? このエラーがあります

Object reference not set to an instance of an object.

この行で

 if (uploadFile.ContentLength > 0)
4

3 に答える 3

2

enctype 属性をフォームに追加する必要があります。

@using (Html.BeginForm("FileUpload", "Blog", FormMethod.Post,
                       new { enctype = "multipart/form-data" }))
于 2013-05-18T16:34:14.930 に答える
0

new { enctype = "multipart/form-data" }パラメータとしてフォームに追加すると、準備完了です。次のようになります。

@using (Html.BeginForm("FileUpload", "Blog", FormMethod.Post, 
                       new { enctype = "multipart/form-data" }))

また、存在制御のためにファイルサイズをチェックしないでください。コントローラー側で null かどうかを制御することをお勧めします。

于 2013-05-18T16:34:43.510 に答える
0

交換

@using (Html.BeginForm("FileUpload", "Blog", FormMethod.Post))

@using (Html.BeginForm("FileUpload", "Blog", FormMethod.Post, new { enctype="multipart/form-data"}))

enctype="multipart/form-data" の意味の詳細については、こちらを参照してください

于 2013-05-18T16:35:18.440 に答える