.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('提交失敗,重新嘗試提交'); } } }) };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM