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

时间:2016-01-24 23:38:29

标签: c# image file-upload asp.net-mvc-5

我是MVC的新手,并尝试构建一个页面以将多个图像上传到我的网站。但是, Request.Files 集合包含字符串,所有字符串都包含“FileUpload”。我已经阅读了很多来自这个网站的多个文件上传文件,但似乎都没有。我不确定我哪里出错了,并且会感谢一些经验丰富的眼睛来帮忙。一旦我能获得正确的文件信息,我就可以上传到我的网站。

感谢您的帮助, 艾伦

下面包含的源文件。

ImagesController.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();
            }
        }
    }
}

Upload.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>

1 个答案:

答案 0 :(得分:0)

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

public ActionResult Upload(IEnumerable<HttpPostedFileBase> uploadFiles)

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

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

进行这些更改后,控制器可以循环显示图像。

谢谢你, 艾伦