.net core webapi 上传图片

 [HttpPost("api/QualificationOne/Upload")]
        public ActionResult Upload(IFormCollection Files, int EntId, int CrtUser)
        {
         
            try
            {
                //var form = Request.Form;//直接从表单里面获取文件名不需要参数
                string dd=  Files["File"];
                var  form = Files;//定义接收类型的参数
                Hashtable hash = new Hashtable();
                IFormFileCollection cols = Request.Form.Files;
                if (cols == null || cols.Count == 0)
                {
                    return Json(new { status = -1, message = "没有上传文件", data = hash });
                }
                 foreach (IFormFile file in cols)
                 {
                        //定义图片数组后缀格式
                        string[] LimitPictureType = { ".JPG", ".JPEG", ".GIF", ".PNG", ".BMP" };
                        //获取图片后缀是否存在数组中
                        string currentPictureExtension = Path.GetExtension(file.FileName).ToUpper();
                        if (LimitPictureType.Contains(currentPictureExtension))
                        {

                        //为了查看图片就不在重新生成文件名称了
                        // var new_path = DateTime.Now.ToString("yyyyMMdd")+ file.FileName;
                         var new_path = Path.Combine("uploads/images/", file.FileName);
                            var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", new_path);
                       
                            using (var stream = new FileStream(path, FileMode.Create))
                            {
                               
                                //图片路径保存到数据库里面去
                                bool flage=  QcnApplyDetm.FinancialCreditQcnApplyDetmAdd(EntId, CrtUser, new_path);
                                if (flage == true)
                                {
                                    //再把文件保存的文件夹中
                                    file.CopyTo(stream);
                                    hash.Add("file", "/" + new_path);
                                }
                            }
                        }
                        else
                        {
                            return Json(new { status = -2, message = "请上传指定格式的图片", data = hash });
                        }
                }
             
                return Json(new { status = 0, message = "上传成功", data = hash });
            }
            catch (Exception ex)
            {
               
                return Json(new { status = -3, message = "上传失败", data = ex.Message });
            }

        }

 

,这里有几个重点:

1:引用  IFormCollection 类 获取  Asp.Net.Core 中 Http 请求的一个类,就可以直接获取form表单中的参数,

   应为 ASP.NET Core 中,没有了 IIS ,它的 HttpContext 只能用 IFormCollection 生成获取form表单中的数据

命名空间为 :namespace Microsoft.AspNetCore.Http

2: 引用 IFormFileCollection 类 获取上传图片的文件名

      命名空间为 :namespace Microsoft.AspNetCore.Http

       IFormFile GetFile(string name);,获取一张图片的名称
        IReadOnlyList GetFiles(string name);获取多张图片的名称

3:创建一个  Hashtable hash = new Hashtable(); 类 保存图片路劲进行返回数据

总结:

asp.net mvc 与 asp.net core 中上传图片区别点是

net core没有httpContext 不能采用这种方式获取 http请求中的form 数据,只能使用  IFormCollection 接口类

多熟悉操作IO流自能而能就可以轻松搞定上传图片

(总结的不到位请各位指教我在修改,如上代码经过考验可以直接使用)

 

你可能感兴趣的:(.net,core,webapi)