0

何が欠けているのかわかりませんが、C#MVC 3を使用してファイルをアップロードする必要があります。ここSOの手順に従いましたが、ファイルは常に空です。

これが私の実際のテストコードです:

HTML

@using (Html.BeginForm("Prc", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
   <input type="file" name="file" id="file" />
   <input type="submit" value="submit" />
}

コントローラ

[HttpPost]
public ActionResult Prc(HttpPostedFile file)
{
    if (file != null && file.ContentLength > 0)
    {
        var filename = System.IO.Path.GetFileName(file.FileName);
        var path = System.IO.Path.Combine(Server.MapPath("~/Content/Images"), filename);
        file.SaveAs(path);            
     }

     return RedirectToAction("Index");
 }

Webアプリを実行するときに、ファイルを添付して、[送信]をクリックします。しかし、に到達するControllerと、fileオブジェクトはnullです。常にnullXMLファイル、JPEGファイル、ファイルを試しましたGIFが、どれも機能しませんでした。

これらのコード以外に何かを構成する必要がありますか?

ありがとう

4

2 に答える 2

2

MVCでは、 :HttpPostedFileBaseの代わりにを使用する必要があります。HttpPostedFile

[HttpPost]
public ActionResult Prc(HttpPostedFileBase file)
{
    //...
}
于 2012-08-10T09:23:46.083 に答える
2

もう1つ、つまずく可能性があります。

asp.net mvc 3かみそりを使用して、コントローラーメソッドに渡されるHttpPostedFileBase変数の名前が、ビューのファイル入力タグのIDと名前と一致する必要があることに気づきました。それ以外の場合、asp.netはHttpPostedFileBase変数にnullを渡します。

たとえば、ファイル入力が次のようになっている場合:<input type = "file" name = "filex" id = "filex" />

また、コントローラーメソッドは次のようになります。publicActionResult Uploadfile(HttpPostedFileBase filey)

「filey」変数の場合はNULLになります。ただし、コントローラーメソッドで「filey」の名前を「filex」に変更すると、ファイルが正常に投稿されます。

于 2013-04-01T19:46:06.617 に答える