微信小程序> WebApi接收微信小程序上传的图片并保存在服务器指定路径

WebApi接收微信小程序上传的图片并保存在服务器指定路径

浏览量:778 时间: 来源:叫我Ybbb

找了好久都没找到合适的小程序批量上传图片的方法,最终还是只能循环上传,就自己扣了一个:
思路:

  1. 调用小程序上传图片接口后(API参考小程序开发文档,很详细),取到上传图片的集合,循环调用小程序wx.UploadFile方法,依次上传
  2. 后端取到文件之后生成唯一MD5码(相同的文件生成的MD5码是唯一的),然后取前两位后两位创建文件夹,保存图片前判断下图片是否存在。(这样一个完全相同的图片就不会被重复被保存在服务器上了)
  3. 把每次上传后端API接口返回的MD5和文件后缀名,以逗号分隔拼成字符串。所有的文件上传完成之后,请求APi接口,批量保存在数据库TB_File表中;
  4. 以后调用时通过生成MD5的逻辑截取路径取图片,我这里取的前两位后两位

下面上后端API代码!

[HttpPost]        public IHttpActionResult SaveImages2()        {            HttpPostedFile file = HttpContext.Current.Request.Files["file"];//接收            string ext = Path.GetExtension(file.FileName);//文件后缀名            Stream s = file.InputStream;//文件流            MD5 md5 = new MD5CryptoServiceProvider();            byte[] retVal = md5.ComputeHash(s);            StringBuilder sb = new StringBuilder();            for (int i = 0; i  retVal.Length; i++)            {                sb.Append(retVal[i].ToString("x2"));            }            string Md5res = sb.ToString();//上面的代码是为了生成文件唯一的MD5码            string path = Md5res.Substring(0, 2);            string path1=Md5res.Substring(Md5res.Length - 2, 2)//取MD5的前两位和后两位生成文件夹,把图片存在后两位的文件夹内            string fileSaveLocation = $"E:\CoolSchoolImages\{path}\{path1}\{Md5res}.jpg";.//文件最终保存路径            if (!File.Exists(fileSaveLocation))//判断文件是否存在            {//若不存在                Directory.CreateDirectory($"E:\CoolSchoolImages\{path}\{path1}");//这个方法创建文件夹的时候如果文件夹存在的话就不会创建了,所以不管文件有没有都调用一下,省得写那么多判断                file.SaveAs(fileSaveLocation);保存文件            }            return Ok(Md5res+ext);返回MD5码,用于后面保存在数据库        }

小程序部分代码
这里的imgUrls是选择的图片数组,后面把返回的文件名加逗号拼接成了字符串,用于后面保存到数据库
小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎