MVC5 - 上传多个图像不提供文件集合

本文关键字:文件 集合 图像 MVC5 | 更新日期: 2023-09-27 18:31:45

我是MVC的新手,正在尝试构建一个页面以将多个图像上传到我的网站。但是,Request.Files 集合包含字符串,所有字符串都包含"FileUpload"。我已经阅读了许多来自本网站的多个文件上传,但似乎都没有工作。我不确定我哪里出错了,并希望一些有经验的眼睛提供帮助。一旦我能获得正确的文件信息,我就可以上传到我的网站。

感谢您的帮助,艾伦

源文件包含在下面。

图像控制器.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MyApp.Controllers
{
    public class ImagesController : Controller
    {
        // GET: Images/Upload
        [HttpGet]
        public ActionResult Upload()
        {
            return View();
        }
        // POST: Images/Upload
        [HttpPost]
        public ActionResult Upload(FormCollection formCollection)
        {
            try
            {
                HttpFileCollectionBase files = Request.Files;
                foreach(HttpPostedFileBase file in files)
                {
                    int length = file.ContentLength;
                    string type = file.ContentType;
                    string filename = file.FileName;
                 }
                 return RedirectToAction("Upload");
            }
            catch
            {
                return View();
            }
        }
    }
}

上传.cshtml

@{Layout = null;}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Upload</title>
</head>
<body>
    <form method="post" action="~/Images/Upload" id="form1" enctype="multipart/form-data">
        <table style="margin:1px; background-color:#ccc;">
            <tr style="background-color:#fff;">
                <td><h1>File Upload Form</h1></td>
                <td rowspan="3">
                    @if (ViewData.Model != null)
                    {
                        foreach (var item in ViewData.Model)
                        {
                            <img src="/Images/@item["Path"]" alt="FileUpload     Image" />
                        }
                    }
                </td>
            </tr>
            <tr style="background-color:#fff;">
                <td>
                    <input type="file" name="FileUpload" id="FileUpload"         multiple="multiple" />
                </td>
            </tr>
            <tr style="background-color:#fff;">
                <td>
                    <input type="submit" name="btnSubmit" value="Upload"         id="btnSubmit" />
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

MVC5 - 上传多个图像不提供文件集合

答案已经找到,我有两个主要问题导致代码无法按预期运行。 方法声明有缺陷,应为:

public ActionResult Upload(IEnumerable<HttpPostedFileBase> uploadFiles)

其次,视图中的输入名称和声明中的参数必须匹配。更改要使用的视图:

<input type="file" name="uploadFiles" id="FileUpload" multiple="multiple" />

进行这些更改,允许控制器循环浏览图像。

谢谢艾伦