1

デフォルトのバインダーを入力ファイル制御とバイト配列型のプロパティで動作させることができた人はいますか?

ViewModel に Image という名前のプロパティがあり、ビュー名 Image にファイル入力コントロールがある場合、デフォルトのバインダーは次のエラーを発行します。

入力は有効な Base-64 文字列ではありません。非 Base 64 文字、3 つ以上の埋め込み文字、または埋め込み文字の間に非空白文字が含まれているためです。

4

2 に答える 2

3

なぜbyte[]配列が必要なのですか?デフォルトのモデルバインダーはHttpPostedFileBaseで動作します:

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

そして、これを処理するコントローラーアクション:

[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
    if (file.ContentLength > 0) 
    {
        var fileName = Path.GetFileName(file.FileName);
        var path = Path.Combine(Server.MapPath("~/App_Data"), fileName);
        file.SaveAs(path);
    }
    return RedirectToAction("Index");
}

これは、複数のファイルでも機能します。IEnumerable<HttpPostedFileBase>アクションメソッドのシグニチャで使用するだけです。

于 2010-07-21T06:21:14.900 に答える