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>
答案已经找到,我有两个主要问题导致代码无法按预期运行。 方法声明有缺陷,应为:
public ActionResult Upload(IEnumerable<HttpPostedFileBase> uploadFiles)
其次,视图中的输入名称和声明中的参数必须匹配。更改要使用的视图:
<input type="file" name="uploadFiles" id="FileUpload" multiple="multiple" />
进行这些更改,允许控制器循环浏览图像。
谢谢艾伦