1.dotnet Core 這里使用 List<IFormFile> 作為接收參數 進行接收文件
1 /// <summary> 2 /// 上傳文件 3 /// </summary> 4 /// <param name="files">文件流</param> 5 /// <returns></returns> 6 [HttpPost] 7 public OkObjectResult FileSave(List<IFormFile> files) 8 { 9 10 if (files.Count < 1) 11 { 12 return Ok("空文件"); 13 } 14 //返回的文件地址 15 List<string> filenames = new List<string>(); 16 DateTime now = DateTime.Now; 17 //文件存儲路徑 18 string filePath = string.Format("/Uploads/{0}/{1}/{2}/", now.ToString("yyyy"), now.ToString("yyyyMM"), now.ToString("yyyyMMdd")); 19 //獲取當前web目錄 20 var webRootPath = "File/"; ; 21 if (!Directory.Exists(webRootPath + filePath)) 22 { 23 Directory.CreateDirectory(webRootPath + filePath); 24 } 25 try 26 { 27 foreach (var item in files) 28 { 29 if (item != null) 30 { 31 #region 圖片文件的條件判斷 32 //文件后綴 33 string fileExtension = Path.GetExtension(item.FileName); 34 35 //判斷后綴是否是圖片 36 const string fileFilt = ".gif|.jpg|.jpeg|.png"; 37 if (fileExtension == null) 38 { 39 break; 40 //return Error("上傳的文件沒有后綴"); 41 } 42 if (fileFilt.IndexOf(fileExtension.ToLower(), StringComparison.Ordinal) <= -1) 43 { 44 break; 45 //return Error("請上傳jpg、png、gif格式的圖片"); 46 } 47 48 //判斷文件大小 49 long length = item.Length; 50 if (length > 1024 * 1024 * 2) //2M 51 { 52 break; 53 //return Error("上傳的文件不能大於2M"); 54 } 55 56 #endregion 57 58 string strDateTime = DateTime.Now.ToString("yyMMddhhmmssfff"); //取得時間字符串 59 string strRan = Convert.ToString(new Random().Next(100, 999)); //生成三位隨機數 60 string saveName = strDateTime + strRan + fileExtension; 61 62 //插入圖片數據 63 using (FileStream fs = System.IO.File.Create(webRootPath + filePath + saveName)) 64 { 65 item.CopyTo(fs); 66 fs.Flush(); 67 } 68 filenames.Add(filePath + saveName); 69 } 70 } 71 return Ok(filenames); 72 } 73 catch (Exception ex) 74 { 75 //這邊增加日志,記錄錯誤的原因 76 //ex.ToString(); 77 return Ok("上傳失敗"); 78 } 79 }
2.前端使用FormData接收文件JS內容,這里采用的是form表單提交的方式,引入兩個(jquery.js ,form.js)文件
<script src="http://code.jquery.com/jquery-latest.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.form/4.2.2/jquery.form.min.js" integrity="sha384-FzT3vTVGXqf7wRfy8k4BiyzvbNfeYjK+frTVqZeNDFl8woCbF0CYG6g2fMEFFo/i" crossorigin="anonymous"></script>
1.HTML 內容
<h1>通過form表單提交</h1> <form id="myform" name="myform" method="post" enctype="multipart/form-data" action="https://localhost:44376/Upload/FormImg"> <input type="file" name="files" id="files" value="選擇需要上傳的文件" multiple /> <input type="button" id="submitbtn" value="提交" onclick="uplpadfile()"> </form>
<script type="text/javascript"> //前端第一種提交方式 function uplpadfile(){ //獲取表單的數據 var formdata var file = $("#files").get(0); var files = file.files; var formdata = new FormData(); for (var i = 0; i < files.length; i++) { formdata.append("files", files[i]); } $.ajax({ type:'Post', data:formdata, contentType: false, processData: false, url:"https://localhost:44398/api/WeatherForecast/FileSave", success:function(result){ if (result.Success) { var imglist =result.Data; for(var i in imglist){ $("#imglist").append('<img src="'+https://localhost:44398+imglist[i]+'"/>'); } }else{ alert('提交失敗,重新嘗試提交'); } } }) };