我是MVC的新手,并尝试构建一个页面以将多个图像上传到我的网站。但是, Request.Files 集合包含字符串,所有字符串都包含“FileUpload”。我已经阅读了很多来自这个网站的多个文件上传文件,但似乎都没有。我不确定我哪里出错了,并且会感谢一些经验丰富的眼睛来帮忙。一旦我能获得正确的文件信息,我就可以上传到我的网站。
感谢您的帮助, 艾伦
下面包含的源文件。
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();
}
}
}
}
@{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>
答案 0 :(得分:0)
答案已经找到,我有两个主要问题导致代码无法按预期运行。方法声明存在缺陷,应为:
public ActionResult Upload(IEnumerable<HttpPostedFileBase> uploadFiles)
其次,视图中的输入名称和声明中的参数必须匹配。更改要使用的视图:
<input type="file" name="uploadFiles" id="FileUpload" multiple="multiple" />
进行这些更改后,控制器可以循环显示图像。
谢谢你, 艾伦