上传文件

时间:2017-02-01 01:43:49

标签: asp.net-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:输入不是有效的Base-64字符串,因为它包含非基本64个字符,两个以上的填充字符或填充字符中的非法字符。

我的问题是:

FileData列的数据库表数据类型是否正确?

FileData字段的模型类型是否正确?

异常的原因是什么?

2 个答案:

答案 0 :(得分:0)

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

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

在后期行动方法中,您的行动需要提及

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

控制器操作应该接受我们发送的文件,如下所示:

public ActionResult SaveImage(HttpPostedFileBase imageInput)

答案 1 :(得分:0)

您可以将其添加到您的模型中:

*(n->c) += strlen(s);

然后在视图中使用它:

public HttpPostedFileBase FileData{ get; set; }