2017-02-01 8 views
0

私はMVC Webサイト経由で画像をアップロードできるようにしています。ユーザーが画像をアップロードしてから、コントローラ内の別の操作で、すべての画像を取り出して表示するという計画です。アップロードされたファイルのMVCフィールドタイプ

私のモデルは、このフィールドがあります。

public virtual byte[] FileData{ get; set; } 

をそして、私のデータベーステーブルには、この列があります。私の見解では

FileData varbinary 

私は次のことを持っているが:

<div class="form-group"> 
    @Html.LabelFor(model => model.FileData, htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
      @Html.TextBoxFor(model => model.FileData, new { type = "file" }) 
      @Html.ValidationMessageFor(model => model.FileData) 
    </div> 
</div> 

私が提出私はこのエラーが発生するフォーム:

System.FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.

私の質問は以下のとおりです。

は正しいFileData列のデータベーステーブルのデータ型ですか?

FileDataフィールドのモデルタイプは正しいですか?

例外の原因は何ですか?

+0

[ここに答える]があります(http://stackoverflow.com/questions/15106190/uploading-files-into-database-with-asp-net- mvc)。あなたの例外としては、例外の原因は何ですか?完全なスタックトレースはどのように見えますか? – Jasen

+1

- '@ Html.TextBoxFor(m => m.File、new {type =" file}) 'にバインドし、入力ストリームをデータモデルの' byte [ ] FileData'プロパティ –

答えて

0

私は通常、剃刀ヘルパーの代わりにファイルタイプのHTML入力を使用します。

0

あなたはそれを追加することができます。私たちは、このように送信されたファイルを受け入れる必要があり

<form enctype="multipart/form-data" action="/controller/SaveImage" method="post"> 

コントローラのアクションが

<input type="file" id="imageInput" name="imageInput" value="" multiple="multiple" /> 

は、ポストアクションメソッドでは、あなたの行動は言及する必要がありますあなたのモデルに:

public HttpPostedFileBase FileData{ get; set; } 

そして、ビューにそのようにそれを使用する:

@Html.TextBoxFor(model => model.FileData, new { type = "file" }) 
関連する問題