單個文件,多個文件區別不大,只是需要把多個文件裝在一個容器里面,循環遍歷即可;
需要注意的 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(); }
可以試試!