.Net Core Web API 上传图片或文件
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('提交失败,重新尝试提交'); } } }) };