asp.nwt MVC 表单提交带多个文件上传问题

??544 2018-02-10 08:31:22
表单提交多个实体,每个实体里都有一个上传文件,在控制器里要如何接受这些提交的表单的信息??
在后台控制器里怎么才能知道是 张三 的上传文件 还是李四的上传文件。
表单代码如下:
<form action="@Url.Action("Test")" method="post">
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>ExcelFile</th>
</tr>
</thead>
<tbody>
<tr>
<td><input name="ID" value="1" /></td>
<td><input name="Name" value="张三" /></td>
<td><input name="file" type="file"></td>
</tr>
<tr>
<td><input name="ID" value="2" /></td>
<td><input name="Name" value="李四" /></td>
<td><input name="file" type="file"></td>
</tr>
<tr>
<td><input name="ID" value="3" /></td>
<td><input name="Name" value="王五" /></td>
<td><input name="file" type="file"></td>
</tr>
</tbody>
</table>
<input type="submit" class="btn btn-success" id="submit1" value="提交" />
</form>
实体代码如下:
public class People{
public string ID{get;set;}
public string Name{get;set;}
}
...全文
436 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
后台读取文件的物理顺序与你页面上的顺序是一致的……
不过如果你不是都必须上传文件的话,这个可能就不好控制了,也许你可以考虑给你的file加个id,再查下是否可以通过id来对应
正怒月神 版主 2018-02-11
  • 打赏
  • 举报
回复
http://blog.csdn.net/hanjun0612/article/details/53518581
??544 2018-02-11
  • 打赏
  • 举报
回复
引用
我这是演示,实际中,可以建立一个类


class info
{
    public string Name{get;set;}
    public int ID{get;set;}
    public string fileName{set;get;}

}

public ActionResult Test(HttpPostedFileBase file)
{
    info i=new info();
    i.Name=Request.From["Name"].ToString();
    i.ID=Request.Form["ID"].ToString();
 
    var fileName = file.FileName;
    var filePath = Server.MapPath("~/myfile");
    file.SaveAs(Path.Combine(filePath, fileName));
 
    i.fileName=fileName;

            return View();
 
    ...........
}

将接收到的人名(Name)和文件名封装到一个类,就能对应上了 “在后台控制器里怎么才能知道是 张三 的上传文件 还是李四的上传文件。”
二楼 智慧 用文件名 完全可以
??544 2018-02-11
  • 打赏
  • 举报
回复
引用
4# 后台读取文件的物理顺序与你页面上的顺序是一致的…… 不过如果你不是都必须上传文件的话,这个可能就不好控制了,也许你可以考虑给你的file加个id,再查下是否可以通过id来对应
由于form 里的tr 是js 动态生成 所以个数不确定,用Id 不合适的
??544 2018-02-11
  • 打赏
  • 举报
回复
引用
3#
智慧啊,用文件名完全可以的
秋的红果实 2018-02-10
  • 打赏
  • 举报
回复
我这是演示,实际中,可以建立一个类

class info
{
    public string Name{get;set;}
    public int ID{get;set;}
    public string fileName{set;get;}

}

public ActionResult Test(HttpPostedFileBase file)
{
    info i=new info();
    i.Name=Request.From["Name"].ToString();
    i.ID=Request.Form["ID"].ToString();
 
    var fileName = file.FileName;
    var filePath = Server.MapPath("~/myfile");
    file.SaveAs(Path.Combine(filePath, fileName));
 
    i.fileName=fileName;

            return View();
 
    ...........
}
将接收到的人名(Name)和文件名封装到一个类,就能对应上了 “在后台控制器里怎么才能知道是 张三 的上传文件 还是李四的上传文件。”
秋的红果实 2018-02-10
  • 打赏
  • 举报
回复
张三,李四,王五,是用户数据,一样的业务逻辑,写上传一个的就行。这三个人提交三次。 当然一次性提交也不是不可以,要是上传文件较大,要等好久,用户体验差,还容易失败 在控制器里要如何接受这些提交的表单的信息?? ==> 类似

public ActionResult Test(HttpPostedFileBase file)
{
    string Name=Request.From["Name"];
    
    var fileName = file.FileName;
    var filePath = Server.MapPath("~/myfile");
    file.SaveAs(Path.Combine(filePath, fileName));

            return View();

    ...........
}

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧