WebApi接收微信小程序上传的图片(二进制文件流)并保存在服务器指定路径
2018-10-23 14:25
507 查看
找了好多天都没找到小程序批量上传图片的方法,然后我现在的逻辑是:
- 取到上传图片的集合,循环调用小程序wx.UploadFile方法,依次上传
- 后端取到文件之后生成唯一MD5码(相同的文件生成的MD5码是唯一的),然后取前两位后两位创建文件夹,保存图片前判断下图片是否存在。(这样一个完全相同的图片就不会被重复被保存在服务器上了)
- 小程序前端每次把上传返回的MD5放入一个集合中。或者以逗号分隔的字符串。所有的文件上传完成之后,请求APi接口,批量保存在数据库TB_FIle表中
- 以后调用时通过MD5码截取路径取图片
下面上后端部分代码!
[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是选择的图片数组,后面把返回的文件名加逗号拼接成了字符串,用于后面保存到数据库
相关文章推荐
- 微信小程序-从相册获取图片,视频 使用相机拍照,录像上传+服务器(nodejs版)接收
- 微信小程序服务器请求和上传数据,上传图片并展示,提交表单完整实例代码附效果图
- 上传图片保存到服务器,并保存图片路径到数据库
- 微信小程序上传图片到服务器实例代码
- .NET开发微信小程序-生成二维码/上传图片到服务器
- 微信小程序开发(二)图片上传+服务端接收
- 微信小程序上传多图到服务器并获取返回的路径
- (转) Unity使用WWW下载服务器上的图片,并保存到指定路径。
- [转]微信小程序开发(二)图片上传+服务端接收
- 微信js上传的图片只能保存3天 下载到自己的服务器
- php上传图片到指定位置路径保存到数据库的具体实现
- php上传图片到指定位置路径保存到数据库
- kindeditor扩展粘贴截图功能&修改图片上传路径并通过webapi上传图片到图片服务器
- 上传图片并保存到服务器上之后,如何得到该图片服务器路径(http://~)
- 微信小程序上传图片 后台Java+spring接收
- 百度UEditor图片文件改变默认保存到项目根路径,自定义上传路径或远程服务器
- 上传图片并保存到服务器上之后,如何得到该图片服务器路径(http://~)
- php上传图片到指定位置路径保存到数据库的具体实现
- 上传图片到服务器,服务器保存并且接收到了,但是必须刷新文件夹或者重新部署文件才能在客户端显示图片
- Java上传图片到服务器路径获取系列之--图片保存到Tomcat的webapps目录下