zoukankan      html  css  js  c++  java
  • .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('提交失败,重新尝试提交'); } } }) };
  • 相关阅读:
    mysql数据库常用指令
    解决windows的mysql无法启动 服务没有报告任何错误的经验。
    “Can't open file for writing”或“operation not permitted”的解决办法
    启动Apache出现错误Port 80 in use by "Unable to open process" with PID 4!
    如何打开windows的服务services.msc
    常见的HTTP状态码 404 500 301 200
    linux系统常用的重启、关机指令
    (wifi)wifi移植之命令行调试driver和supplicant
    linux(debian)安装USB无线网卡(tp-link TL-WN725N rtl8188eu )
    alloc_chrdev_region申请一个动态主设备号,并申请一系列次设备号
  • 原文地址:https://www.cnblogs.com/XiangZiPeng/p/12371058.html
Copyright © 2011-2022 走看看