0

我正在尝试上传多个文件并在视图中遍历它们。但不是上传 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

4

2 回答 2

0

可能不是您正在寻找的答案,但我会推荐一种不同的方法。那篇博文很老了。我使用plupload jquery 插件进行多文件上传。非常容易使用,非常容易实现。这是在另一个问题中发布的关于如何使用 MVC 实现的示例。在示例中,将为您尝试上传的每个文件调用 Upload 方法。

在 MVC3 中使用 plupload

希望有帮助。

于 2013-01-07T00:17:41.793 回答
-1

这可能无法回答您的问题,但它是另一种上传文件的方式。

尝试这个:

[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> files)
{
    if (files != null && files.Count() > 0)
    {
        foreach (var uploadedFile in files)
        {
            if (uploadedFile.ContentType != "image/vnd.dwg") 
            {
                return RedirectToAction("List");
            }

            var appData = Server.MapPath("~/app_data");
            var filename = Path.Combine(appData, Path.GetFileName(uploadedFile.FileName));
            uploadedFile.SaveAs(filename);                    
        }
    }

    return RedirectToAction("Success");
}

并修改标记,使文件输入命名为文件:

<input type="file" name="files" />
<input type="file" name="files" />
...// many inputs type file

“最初由 Darin Dimitrov 发布”,链接:使用 C# 和 MVC3 的 HttpFileCollectionBase 问题上传多个文件

于 2013-01-07T00:49:08.157 回答