Asp.net mvc 2 使用Request.Files[“Files”MVC进行多文件上载

Asp.net mvc 2 使用Request.Files[“Files”MVC进行多文件上载,asp.net-mvc-2,Asp.net Mvc 2,这是我的密码。我想上传3个文件到我的数据库中 首先,我写下: ..... 这是3个文件上传: <input type="file" name="files" id="FileUpload1" /> <input type="file" name="files" id="FileUpload2" /> <input type="file" name="files" id="FileUpload3" /> 在控制器中,我使用以下代码: IEnumerabl

这是我的密码。我想上传3个文件到我的数据库中

首先,我写下: .....

这是3个文件上传:

<input type="file" name="files" id="FileUpload1" />
<input type="file" name="files" id="FileUpload2" />
<input type="file" name="files" id="FileUpload3" />

在控制器中,我使用以下代码:

IEnumerable<HttpPostedFileBase> files = Request.Files["files"] as IEnumerable<HttpPostedFileBase>;
foreach (var file in files)
{
byte[] binaryData = null;
HttpPostedFileBase uploadedFile = file;
if (uploadedFile != null && uploadedFile.ContentLength > 0){
 binaryData = new byte[uploadedFile.ContentLength];
 uploadedFile.InputStream.Read(binaryData, 0,uploadedFile.ContentLength);
}
}
IEnumerable files=Request.files[“files”]作为IEnumerable;
foreach(文件中的var文件)
{
字节[]二进制数据=null;
HttpPostedFileBase uploadedFile=文件;
如果(uploadedFile!=null&&uploadedFile.ContentLength>0){
binaryData=新字节[uploadedFile.ContentLength];
uploadedFile.InputStream.Read(二进制数据,0,uploadedFile.ContentLength);
}
}
但文件总是返回NULL:(

请帮帮我,谢谢。

试试这个:

<% using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) {%>
    <input type="file" name="files" id="FileUpload1" />
    <input type="file" name="files" id="FileUpload2" />
    <input type="file" name="files" id="FileUpload3" />
    <input type="submit" value="Upload" />
<% } %>

以及相应的控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(IEnumerable<HttpPostedFileBase> files)
    {
        foreach (var file in files)
        {
            if (file.ContentLength > 0)
            {
                // TODO: do something with the uploaded file here
            }
        }
        return RedirectToAction("Index");
    }
}
公共类HomeController:控制器
{
公共行动结果索引()
{
返回视图();
}
[HttpPost]
公共操作结果索引(IEnumerable文件)
{
foreach(文件中的var文件)
{
如果(file.ContentLength>0)
{
//TODO:在此处对上载的文件执行某些操作
}
}
返回操作(“索引”);
}
}
有点干净。

试试这个:

<% using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) {%>
    <input type="file" name="files" id="FileUpload1" />
    <input type="file" name="files" id="FileUpload2" />
    <input type="file" name="files" id="FileUpload3" />
    <input type="submit" value="Upload" />
<% } %>

以及相应的控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(IEnumerable<HttpPostedFileBase> files)
    {
        foreach (var file in files)
        {
            if (file.ContentLength > 0)
            {
                // TODO: do something with the uploaded file here
            }
        }
        return RedirectToAction("Index");
    }
}
公共类HomeController:控制器
{
公共行动结果索引()
{
返回视图();
}
[HttpPost]
公共操作结果索引(IEnumerable文件)
{
foreach(文件中的var文件)
{
如果(file.ContentLength>0)
{
//TODO:在此处对上载的文件执行某些操作
}
}
返回操作(“索引”);
}
}
它有点干净。

您应该使用:

IList<HttpPostedFileBase> files = Request.Files.GetMultiple("files")
IList files=Request.files.GetMultiple(“文件”)
相反。

您应该使用:

IList<HttpPostedFileBase> files = Request.Files.GetMultiple("files")
IList files=Request.files.GetMultiple(“文件”)

相反。

是否需要添加“IEnumerable files”要将actionResult作为参数吗?我这样做了,但仍然为NULL是的,这样您就不再需要在操作中使用
请求.Files
。默认的模型绑定器将完成此工作。我不知道为什么您会得到NULL。这些输入是否在表单中?当我测试代码时,我能够获取上载的文件。如果我已经得到了这些文件,该怎么办返回页面上其他内容的模型作为我的控制器方法的参数,那么我如何使其工作?@JamesBender,您只需定义一个视图模型,并让控制器操作将此视图模型作为参数。是否需要添加“IEnumerable files”要将actionResult作为参数吗?我这样做了,但仍然为NULL是的,这样您就不再需要在操作中使用
请求.Files
。默认的模型绑定器将完成此工作。我不知道为什么您会得到NULL。这些输入是否在表单中?当我测试代码时,我能够获取上载的文件。如果我已经得到了这些文件,该怎么办返回页面上其他内容的模型作为控制器方法的参数,那么我如何使其工作?@JamesBender,您只需定义一个视图模型,并让控制器操作将此视图模型作为参数。