0

ユーザーがhtmlフォームで画像をアップロードできるようにしようとしていますが、モデルにbyte []として保存したいと思います(dbに保存されます)byte[]の代わりに他のものを使用する必要がない限り?

これは私のフォームがどのように見えるかです

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
    <legend>ImageUploadModel</legend>

    @Html.DisplayFor(model => model.Image)
   <input type="file" name="Image" id="Image" accept="image/*" />

    @Html.DisplayFor(model => model.Caption)
    @Html.EditorFor(model => model.Caption)
    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>

}

これが私のコントローラーが今どのように見えるかです

[HttpPost]
    public ActionResult Create(ImageUploadModel model)
    {
           // do stuff

        return View();
    }

そして、これが私のImageUploadModelの外観です

public class ImageUploadModel
{
    public Guid UploadedBy { get; set; }

    [Display(Name = "Image")]
    public byte[] Image { get; set; }

    [Display(Name = "Image Caption")]
    public string Caption { get; set; }
}

ファイルをアップロードしようとすると、有効なbase64stringではないというエラーが表示されます。

MVC4 / C#でアップロードされたファイルをbyte[]として取得する適切な方法は何ですか

ありがとう

4

2 に答える 2

1

フォームタグを次のように変更YourControllerNameします(実際のコントローラー名に置き換えることができます)

@using (Html.BeginForm("Create", "YourControllerName", 
            FormMethod.Post, new { enctype = "multipart/form-data" }))
{
  <input type="file" name="Image" />
  <input type="file" name="Image" id="Image" 
  //your other form elements also
}

要素と同じ名前POSTインスタンスを受け入れるようにアクションを変更しますHttpPostedFileBaseinput file

[HttpPost]
public ActionResult Create(HttpPostedFileBase Image)
{
       // do stuff

    return View();
}
于 2012-07-22T21:58:57.650 に答える
0

これをに変更する必要がありHttpPostedFileBaseます。

于 2012-07-22T21:51:28.253 に答える