【发布时间】:2017-01-18 06:21:30
【问题描述】:
我正在尝试上传多个文件并在视图中遍历它们。但不是上传 X 个文件,而是多次上传第一个文件 X 次(例如,如果我上传了 3 个文件,则上传 3 次)。在目标文件夹中,仅保存一个文件。
它似乎可以识别存在的文件数量,那么为什么不遍历它们呢?
我应该提一下,我对 asp.net/c# 很陌生(更习惯于经典/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 的帖子:http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx
【问题讨论】:
-
您能从视图中发布您的 Html 吗?您是否还调试过代码并查看了 Request.Files 中的计数
-
这可能听起来很疯狂,但请确保您不会在 UI 中将同一个文件上传 3 次
-
抱歉,无法在 cmets 部分发布代码。现在是英国时间凌晨 1 点,所以我放弃了,明天再来!