.net core Webapi 文件上传

.net core Webapi 文件上传

最近在做微信小程序上传文件的过程中,遇到的一些坑给大家整理下。

下面直接给大家看个小demo

微信小程序前端上传请求

wx.chooseImage({
    sizeType: ['original''compressed'], // 可以指定是原图还是压缩图,默认二者都有
    sourceType: ['album''camera'], // 可以指定来源是相册还是相机,默认二者都有
    successfunction (res) {
        let url = app.GET_API_URL("Report""SubmitEquipment");
        wx.uploadFile({
            url: url, //仅为示例,非真实的接口地址
            filePath: res.tempFilePaths[0],
            name'file',
            formData: {
                'processName''A03004',
                'incident''0',
            },
            success(res) {
            }
        })
    }
})
后端Webapi请求

在这里大家要注意的是,这里写的是.net core文件操作,由于个人原因,将asp.net.net core 弄混淆了,导致在这一块浪费了很多时间,在这里,给大家些两个方案,asp.net 和.net core

他们主要的区别在于:

1.asp.net 大部分都是使用的:HttpFileCollectionHttpContext.Current.Request.Files
2..net core 使用的是IFormFileIFormFileCollection 方便简单

后端Webapi请求(asp.net方式)

  [HttpPost]
        public string PostFiles()
        {
            string result = "";
            HttpFileCollection filelist = HttpContext.Current.Request.Files;
            if (filelist != null && filelist.Count > 0)
            {
                for (int i = 0; i < filelist.Count; i++)
                {
                    HttpPostedFile file = filelist[i];
                    String Tpath = "/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
                    string filename = file.FileName;
                    string FileName = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                    string FilePath = 保存路径 + "\\" + Tpath + "\\";
                    DirectoryInfo di = new DirectoryInfo(FilePath);
                    if (!di.Exists) { di.Create(); }
                    try
                    {
                        file.SaveAs(FilePath + FileName);
                        result.obj = (Tpath + FileName).Replace("\\""/");
                    }
                    catch (Exception ex)
                    {
                        result = "上传文件写入失败:" + ex.Message;
                    }
                }
            }
            else
            {
                result = "上传的文件信息不存在!";
            }
            return result;
        }

后端Webapi请求(.net core方式)

        /// <summary>
        /// 上传图片
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public ActionResult<boolUploadFile(IFormFile file)
        {
            string json = string.Empty;
            if (file != null)
            {
                try
                {
                    // 文件后缀
                    var fileExtension = Path.GetExtension(file.FileName);
                    // 判断后缀是否是图片
                    const string fileFilt = ".gif|.jpg|.jpeg|.png";
                    if (fileFilt.IndexOf(fileExtension.ToLower(), StringComparison.Ordinal) <= -1)
                    {
                        //myds.Message = "请上传jpg、png、gif格式的图片";
                    }
                    var strDateTime = DateTime.Now.ToString("yyMMddhhmmssfff"); //取得时间字符串
                    var strRan = Convert.ToString(new Random().Next(100999)); //生成三位随机数
                    var saveName = strDateTime + strRan + fileExtension;// 
                    //保存文件
                    string path = ConfigurationManager.AppSettings["RootPortalPath"];
                    string dir = path + "/File/" + DateTime.Now.ToString("yyyy/MM/dd");
                    string filePath = dir + "/" + saveName;
                    if (!Directory.Exists(dir))
                        Directory.CreateDirectory(dir);
                    // 保存文件到服务器
                    using (FileStream fs = System.IO.File.Create(filePath))
                    {
                        file.CopyTo(fs);
                        fs.Flush();
                    }
                }
                catch (Exception ex)
                {
                    //这边增加日志,记录错误的原因
                    //ex.ToString();
                }
            }
            return ActionResultUtil.JsonText(json);
        }
posted @   亘古不变  阅读(10)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示