複数のファイルをアップロードして、ビューで繰り返し処理しようとしています。ただし、X 個のファイルをアップロードするのではなく、最初のファイル X を何度もアップロードします (たとえば、3 つのファイルをアップロードした場合は 3 回)。宛先フォルダーには、単一のファイルのみが保存されます。
存在するファイルの数を認識しているように見えるのに、なぜそれらを繰り返し処理しないのですか?
私はasp.net/c#にかなり慣れていない(classic/vbに慣れている)ので、明らかな何かが欠けている場合は申し訳ありません...
コード:
public class ViewDataUploadFilesResult
{
public string Name { get; set; }
public int Length { get; set; }
}
public ActionResult UploadMultipleFiles()
{
var r = new List<ViewDataUploadFilesResult>();
foreach (string file in Request.Files)
{
HttpPostedFileBase hpf = Request.Files[file];//as HttpPostedFileBase;
if (hpf.ContentLength == 0)
continue;
string basepath = Server.MapPath("/Images");
string savedFileName = Path.Combine(basepath, Path.GetFileName(hpf.FileName));
hpf.SaveAs(savedFileName);
r.Add(new ViewDataUploadFilesResult()
{
Name = savedFileName,
Length = hpf.ContentLength
});
}
return View(r);
}
結果の例:
<li>Uploaded: C:\Users...sonatrach.jpg totalling 3581 bytes.</li>
<li>Uploaded: C:\Users...sonatrach.jpg totalling 3581 bytes.</li>
<li>Uploaded: C:\Users...sonatrach.jpg totalling 3581 bytes.</li>
私はここで Scott Hanselman の投稿に取り組んでいます: