单个文件,多个文件区别不大,只是需要把多个文件装在一个容器里面,循环遍历即可;
需要注意的 input 标签中name属性,一定要指定; 在这是 fileBase
需要确定method必须是post ; enctype必须指定为multipart/form-data
单文件
HTML ---- Using
@using (Html.BeginForm("Load", "UPLoad", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<p>
<input type="file" name="fileBase" value="fileBase"/>
<input type="submit" name="name" value="提交" />
</p>
}
HTML ---- form
<form action="/UPLoad/Load" method="post" enctype="multipart/form-data">
<p>
<input type="file" name="fileBase" value="fileBase" />
<input type="submit" name="name" value="提交" />
</p>
</form>
这两种表单,看个人需要自行选用,
控制器
public ActionResult Load(HttpPostedFileBase fileBase)
{
//判断是否获取文件
if (fileBase != null)
{
var s = fileBase.FileName;
//存储文件夹路径
var sks = "/NewFold/";
//判断是否存在路径
if (!Directory.Exists(Server.MapPath(sks)))
//不存在 建一个
Directory.CreateDirectory(Server.MapPath(sks));
fileBase.SaveAs(Server.MapPath(sks + s));
}
return View();
}
多文件
HTML---using
只是在input 标签中加 multiple 属性 就是下面这样: form 标签中也是这样
@using (Html.BeginForm("Load", "UPLoad", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<p>
<input type="file" name="fileBase" value="fileBase" multiple />
<input type="submit" name="name" value="提交" />
</p>
}
控制器
public ActionResult Load(IEnumerable<HttpPostedFileBase> fileBase)
{
if (fileBase != null)
{
foreach (var item in fileBase)
{
var s = item.FileName;
var sks = "/NewFold/";
if (!Directory.Exists(Server.MapPath(sks)))
Directory.CreateDirectory(Server.MapPath(sks));
item.SaveAs(Server.MapPath(sks + s));
}
}
return View();
}
可以试试!