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」が空である理由がわからないので、誰かが私を助けることができれば、どうもありがとう