微信小程序上传文件到阿里云服务器
发布于 2 年前 作者 tliu 3021 次浏览 来自 分享

1、建立 WebApi项目

(1)创建项目

选择菜单 “文件-》新建醒目-》web -》ASP.NET Web 应用程序”

输入项目名称和位置,确定,进入模板选择页面。

选择 WEB API 模板(选择Web API 时会添加对MVC 的支持)

新建API控制器

Controllers ------》右键 ------》添加---------》控制器---------》webapi 2控制器 - 空

(2)发布项目

参考地址 https://blog.csdn.net/weixin_48829226/article/details/121078823

2、后端接口代码

        /// 
        /// 图片上传保存
        /// 

        /// 
        [HttpPost]
        public IHttpActionResult PictureUpload() {
            try
            {
                var picturePath = "";
                const string fileTypes = "gif,jpg,jpeg,png,bmp";//运行上传的图片文件格式
                var content = Request.Content;//获取或设置 HTTP 消息的内容(当需要获取HTTP信息是会使用到)
                const string tempUploadFiles = "/UploadFile/"; //保存路径
                var newFilePath = DateTime.Now.ToString("yyyy-MM-dd") + "/";

                var memoryStreamProvider = new MultipartMemoryStreamProvider();//获取图片文件流信息
                Task.Run(async () => await Request.Content.ReadAsMultipartAsync(memoryStreamProvider)).Wait();
                foreach (var item in memoryStreamProvider.Contents)
                {
                    if (item.Headers.ContentDisposition.FileName == null) continue;

                    var filename = item.Headers.ContentDisposition.FileName.Replace("\"", "");
                    var file = new FileInfo(filename);

                    //upload fail(判断是否是运行上传的图片格式)
                    if (Array.IndexOf(fileTypes.Split(','), file.Extension.Substring(1).ToLower()) == -1)
                    {
                        return Json(new { code = 0, picturePath = "", msg = "不支持上传文件类型" });
                    }

                    //获取后缀
                    var extension = Path.GetExtension(filename);

                    var newFileName = Guid.NewGuid().ToString() + extension;//重命名

                    if (!Directory.Exists(HostingEnvironment.MapPath("/") + tempUploadFiles + newFilePath))
                    {
                        Directory.CreateDirectory(HostingEnvironment.MapPath("/") + tempUploadFiles + newFilePath);
                    }

                    var filePath = Path.Combine(HostingEnvironment.MapPath("/") + tempUploadFiles + newFilePath, newFileName);

                    picturePath = Path.Combine(tempUploadFiles + newFilePath, newFileName);//图片相对路径

                    var result = item.ReadAsStreamAsync().Result;

                    using (var br = new BinaryReader(result))
                    {
                        var data = br.ReadBytes((int)result.Length);
                        File.WriteAllBytes(filePath, data);//保存图片
                    }
                }

                //save successfully
                return Json(new { code = 1, picturePath = picturePath, msg = "图片上传成功~" });
            }
            catch (Exception ex)
            {
                return Json(new { code = 0, msg = ex.Message });
            }
        }

3、小程序端调接口

wx.uploadFile({
                url: 'http://yangyoushan.top:83/api/Default/PictureUpload', //接口地址
                filePath: item.local,//本地地址
                name: 'file',
                formData: {
                    'user': 'test'
                },
                success(res) {
                    var data= JSON.parse(res.data)
                    const url = 'http://yangyoushan.top:83' + data.picturePath
                    list[idx].url = url
                }
            })

参考文献 wx.uploadFile

回到顶部