我正在尝试让访问者通过我的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
字段的模型类型是否正确?
异常的原因是什么?
答案 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; }