我正在尝试允许用户通过html表单上传图像,我想将其作为byte []存储在我的模型中。(将存储在db中)除非我应该使用其他东西而不是字节[]?
这就是我的表格
@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 []的正确方法是什么?由于
答案 0 :(得分: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
操作更改为接受HttpPostedFileBase
的实例以及input file
元素的同名
[HttpPost]
public ActionResult Create(HttpPostedFileBase Image)
{
// do stuff
return View();
}
答案 1 :(得分:0)
您需要将其更改为HttpPostedFileBase
。