我在View中有这段代码:
<div class="form-group">
<label for="imageFile">Image</label>
<input type="image" name="imageFile" class="file-loading form-control input-files" accept=".png,.jpg,.jpeg,.gif,.tif" />
@Html.ValidationMessageFor(model => model.image)
</div>
控制器:
public ActionResult PostIdea(PostIdeaViewModel model, HttpPostedFileBase imageFile) {
if (ModelState.IsValid) {
var newProject = db.Projects.Create();
if (imageFile != null && imageFile.ContentLength > 0) {
newProject.image = new byte[imageFile.ContentLength];
imageFile.InputStream.Read(newProject.image, 0, imageFile.ContentLength);
}
}
}
型号:
[Display(Name = "Image")]
public HttpPostedFileBase image { get; set; }
一切似乎都适合我,但控制器收到的图像为空。代码有问题吗?
编辑:使用enctype =&#34; multipart / form-data&#34;和 @ Html.TextBoxFor(m =&gt; m.image,new {type =&#34; file&#34;}) 为我工作。
答案 0 :(得分:0)
您的表单必须包含enctype =&#34; multipart / form-data&#34;
答案 1 :(得分:0)
type =“image”仅将该图像定义为提交按钮,而不是作为可以发送到服务器的输入。
您应该为案例使用输入类型文件
答案 2 :(得分:0)
我认为你应该使用输入类型&#34; file&#34;。并添加输入类型&#34;提交&#34;。
我的观点:
@using (Html.BeginForm("TestImage", "Test", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="form-group">
<label for="imageFile">Image</label>
<input type="file" name="imageFile" class="file-loading form-control input-files" accept=".png,.jpg,.jpeg,.gif,.tif" />
</div>
<button type="submit">Go !</button>
}
我的控制器:
[HttpPost]
public ActionResult TestImage(Models.Answer model)
{
var imageFiles = Request.Files;
if (imageFiles != null && imageFiles.Count > 0)
{
HttpPostedFileBase imageFile = imageFiles[0];
if (imageFile.ContentLength > 0)
{
var image = new byte[imageFile.ContentLength];
imageFile.InputStream.Read(image, 0, imageFile.ContentLength);
}
}
return View();
}