.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('提交失败,重新尝试提交'); } } }) };

 

posted @ 2020-03-03 08:31  -PENG-  阅读(2236)  评论(1编辑  收藏  举报