微信小程序上传文件到自己的服务器

1、建立 WebApi项目

(1)创建项目

选择菜单 “文件-》新建醒目-》web -》ASP.NET Web 应用程序”
在这里插入图片描述输入项目名称和位置,确定,进入模板选择页面。

选择 WEB API 模板(选择Web API 时会添加对MVC 的支持)在这里插入图片描述新建API控制器

Controllers ------》右键 ------》添加---------》控制器---------》webapi 2控制器 - 空
在这里插入图片描述

(2)发布项目

参考地址

2、后端接口代码

        /// <summary>
        /// 图片上传保存
        /// </summary>
        /// <returns></returns>
        [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

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值