MVC進行多文件上傳
阿新 • • 發佈:2018-06-07
創建 小夥伴 orm tolower 地址 sys TP ica part
用mvc做多文件的上傳和保存到本地,大致流程就是,前臺通過form表單提交多文件,Controller接受到文件流,將文件流保存到本地 然後將保存地址 存到數據庫中。
將文件通過from提交
<form name="form1" method="post" action="地址" id="form1" multiple="multiple" enctype="multipart/form-data"> <input type="file" name="upload_fujian" class="upload_fujian" multiple="multiple" /> </form>
html代碼
$(‘.upload_fujian‘).change( function () { var files = $(this)[0].files; for (var i = 0, f; f = files[i]; i++) { if (f.size < 2 * 1024 * 1024) { //如果需要自動提交表單,可以使用下面的這行代碼,否者就等到用戶點擊按鈕再上傳文件 //$(‘.upload_media‘).parent().submit(); } else { alert(f.name + ‘文件超出上傳大小限制!‘); } } } )
js代碼,主要是控制文件上傳的大小,也可以進行自己處理文件的屬性
public ActionResult Noticeadd(FormCollection form1) {
HttpFileCollectionBase file_ = Request.Files; for (int i = 0; i < file_.Count; i++) { //文件大小 long size = file_[i].ContentLength; //文件類型 string type = file_[i].ContentType; //文件名 string name = file_[i].FileName; string _tp = System.IO.Path.GetExtension(name); if (_tp.ToLower() == ".xls" || _tp.ToLower() == ".doc" || _tp.ToLower() == ".docx" || _tp.ToLower() == ".pdf" || _tp.ToLower() == ".png" || _tp.ToLower() == ".jpg") { string saveName = DateTime.Now.ToString("yyyyMMdd"); string file = "\\Areas\\gonggao\\fujian\\" + saveName + "\\"; string path = System.Web.HttpContext.Current.Request.PhysicalApplicationPath + file; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); DirectoryInfo dirInfo = new DirectoryInfo(path); dirInfo.Attributes = FileAttributes.Normal & FileAttributes.Directory; } file_[i].SaveAs(path + name);
//file + name 為文件名可以保存至數據庫,我這裏是測試,直接返回到前臺了
} }
return view();
}
控制器中傳來的值 form1 為表單提交來的數據,file_為文件流,下面用for循環將多個文件存到本地,可以去控制文件後綴名來控制文件上傳的格式,然後創建文件夾去保存文件,下來對值進行介紹
_tp 為文件後綴名
savename 獲取時間創建文件夾名稱
file 為文件夾路徑(相對路徑)
path 為程序文件地址夾+文件夾路徑(絕對路徑)
上面代碼中第一個if是對文件後綴進行篩選,第二個if是對文件是否存在進行判斷,如果存在則不去保存了
這就完成了對多文件上傳的功能。需要的小夥伴可以看看,有問題可以在評論留言
MVC進行多文件上傳