2017-02-01 76 views
0

我試圖讓訪問者通過我的MVC網站上傳圖片。該計劃是爲用戶上傳圖像,然後在控制器的另一個操作中,獲取所有圖像並顯示它們。上傳文件的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

使用具有屬性'HttpPosedFileBase File'的視圖模型綁定到 - '@ Html.TextBoxFor(m => m.File,new {type =「file})'並將輸入流讀入數據模型的'byte [ ] FileData'屬性。 –

回答

0

我通常使用文件類型的HTML輸入而不是剃刀助手。

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

然後在後的操作方法,你的動作需要提到

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

控制器動作應該接受我們發送這樣的文件:

0

您可以將其添加到您的型號:

public HttpPostedFileBase FileData{ get; set; } 

然後在視圖中使用它這樣的:

@Html.TextBoxFor(model => model.FileData, new { type = "file" })