我正在尝试使用 ASP MVC4 上传文件,我给你我的情况:
- 我有一个带有一些属性的模型类“电影”(没关系)
- 我想在不接触模型的情况下向我的控制器和视图部分添加一些代码,因为我们想让图像与模型不同。
所以,这是我的视图代码的一个例子,我将我添加的行加粗:
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Movie</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Duration)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Duration)
@Html.ValidationMessageFor(model => model.Duration)
</div>
//ADDED BY ME:
<div class="editor-label">
<p>Select a file</p>
</div>
<div class="editor-field">
<input type="file" name="fileUpload" />
</div>//END OF MY CODE
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
所以你可以看到我有一些由 ASP 生成的代码,它允许我向数据库添加一个新用户,并且我添加了一个“输入”来上传图像。
问题是当我尝试从控制器恢复该图像时,“Request.Files”属性为空,所以我无法恢复任何图像,当然我也无法上传它,这是我的控制器代码:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Movie movie)
{
if (ModelState.IsValid)
{
db.MovieContext.Add(movie);
db.SaveChanges();
foreach (string file in Request.Files)
{
var postedFile = Request.Files[file];
postedFile.SaveAs(Server.MapPath("~/UploadedFiles") + pelicula.Id);
}
return RedirectToAction("Index");
}
return View(movie);
}
不知道为什么“Request.Files”是空的,所以如果有人可以帮助我,那就太好了,非常感谢