文章目录

  • 代码
  • 测试结果

代码

@PostMapping(value = "/check")public Map png2(@RequestParam String path,@RequestParam String useragent) throws IOException {Map<String, Object> map = new HashMap();util util = new util();if (path.equals("")||useragent.equals("")){map.put("错误","图片url路径或是useragent为空");return map;}else{//获取当前useragent是pc端还是移动端if (useragent.indexOf("Android") != -1) {util.png3(path);map.put("来自安卓手机", "数据已经保存到本地e盘路径");return map;} else if (useragent.indexOf("iPhone") != -1 || useragent.indexOf("iPad") != -1) {util.png3(path);map.put("来自苹果手机", "数据已经保存到本地e盘路径");return map;} else {// 电脑util.png3(path);map.put("来自PC端", "数据已经保存到本地e盘路径");return map;}}}

工具类两个方法:
1.随机数的,防止图片重名
2.base64解密并且保存图片到本地

//随机数,防止保存图片出现相同public static Integer randomNumber(Integer num) {if (num < 11) {Integer subNum = new Double(Math.pow(10, num - 1)).intValue();return new Random().nextInt(new Double(Math.pow(10, num)).intValue() - subNum) + subNum;}return 0;}
//将图片保存到本地public void png3(String path) throws IOException {//使用substring()方法截取前端传过来的图片urlString result = path.substring(0,path.indexOf(","));String str2 = path.substring(result.length()+1, path.length());System.out.println(str2);//使用BASE64解码获取图片BASE64Decoder base64Decoder = new BASE64Decoder();byte[] bytes = base64Decoder.decodeBuffer(str2);System.out.println(bytes);//将解析后的图片保存到e盘根目录下-->调用生成10位随机数方法防止重名+后缀.pngString imgFilePath = "e:\\" + util.randomNumber(8) + ".png";//将设置好的图片放入输出流写到e盘中OutputStream out = new FileOutputStream(imgFilePath);out.write(bytes);//最后关闭out.flush();out.close();}

这里我保存在e盘下的,你们可以在"e:\"这里修改


测试结果

直接上截图,使用postman测试
提供:
图片的DataURL:

data:image/gif;base64,R0lGODlhMwAxAIAAAAAAAP///
yH5BAAAAAAALAAAAAAzADEAAAK8jI+pBr0PowytzotTtbm/DTqQ6C3hGX
ElcraA9jIr66ozVpM3nseUvYP1UEHF0FUUHkNJxhLZfEJNvol06tzwrgd
LbXsFZYmSMPnHLB+zNJFbq15+SOf50+6rG7lKOjwV1ibGdhHYRVYVJ9Wn
k2HWtLdIWMSH9lfyODZoZTb4xdnpxQSEF9oyOWIqp6gaI9pI1Qo7BijbF
ZkoaAtEeiiLeKn72xM7vMZofJy8zJys2UxsCT3kO229LH1tXAAAOw==

Iphone的useragent

Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5


如果这个dataurl不可用,可以自己前端页面截取过来使用
测试好,返回数据没问题,去到响应的盘符下查看文件是否保存了

我这里是保存了一个8位随机数的
如果保存的图片多可以采取时间搓+随机数+一些用户id什么的,这样就不会有覆盖问题了
还有个问题要要补充一下:
这个是做测试用的,实际用加入一个HttpServletRequest request对象接收前端发来的请求
里面会带请求的参数useragent和dataurl,数据返回可以是告诉用户保存成功,后端看到的是来自哪个终端
ps:判断,前端和后端都可以写

将前端传过来的base64加密图片保存到本地,并且判断来自于哪个终端相关推荐

  1. java base64转图片并保存_java将base64解析图片保存到本地。

    将base64解析图片保存到本地的两个方法 /** * base64转图片 * @param base64str base64码 * @param savePath 图片路径 * @return */ ...

  2. c# base64 转图片保存到本地

    public string Base64ToImage(string base64Str,string path, string imgName){string filename = "&q ...

  3. 编码解析之java将base64解析图片保存到本地。

    经过本人世间.此方法完美 package cn.dreamit;import org.apache.commons.codec.binary.Base64;import java.io.FileOut ...

  4. base64图片保存获取本地路径

    $path = ROOT_PATH . 'public/uploads/headimg'; $pic = base64_image_content($base64_image,$path); //图片 ...

  5. ajax传递多个base64,H5移动开发Ajax上传多张Base64格式图片到服务器

    这篇文章主要为大家详细介绍了H5移动开发Ajax上传多张Base64格式图片到服务器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 废话不多说,直接看代码吧 1.上传组件 2.展示添加上的图片 v ...

  6. 改变base64加密图片的大小

    1.添加依赖 <!-- 图片缩略图 --><dependency><groupId>net.coobird</groupId><artifactI ...

  7. nodejs html 生成图片,使用nodejs将html5 canvas base64编码图片保存为文件

    目前流行的"你画我猜"应用,你有没有想过使用HTML5来实现过?那么不可避免的需要解决canvas保存图片到硬盘或mongodb之类的数据库.本文主要介绍使用nodejs将html ...

  8. Base64图片保存到本地,及解决图片无法打开问题

    Base64图片保存到本地,及解决图片无法打开问题 本demo主要解决两个问题 本demo主要解决两个问题 图片保存的执行过程中,代码没有报错,但是图片没有生成 图片保存到本地了,但是打不开,或者文件 ...

  9. uni-app小程序,将base64图片保存到本地相册

    描述 在做项目时,通过填写个人信息,生成一个二维码,现在要求将生成的二维码保存到本地,当点击图片上面的"保存到本地"时,就会将图片保存到本地相册里 实现过程 下面代码中的picUr ...

  10. python如何将网络上的图片url和base64编码的图片保存在本地

    1.python base64编码的图片保存到本地 import os import base64 sss ="""/9j/4AAQSkZJRgABAQEASABIAAD ...

最新文章

  1. Transformer深至1000层还能稳定训练,微软实习生一作,LSTM之父转发
  2. firefox 中碰到的一个小坑
  3. IOS本地日志记录解决方案
  4. 4000字干货分享|一文学会搭建炫酷可视化大屏
  5. ITK:使用Deformation Field扭曲图像
  6. 127. Word Ladder 单词接龙
  7. primeNG DataTable中Templating ng-template标签报错
  8. Coursera自动驾驶课程第3讲:Self-Driving Hardware and Software Architectures
  9. ffmpeg 过程分析
  10. [转载] java-继承和多态
  11. 直接写和放在函数中不同的R语言用法
  12. 如何与Ansible共同托管GitHub和GitLab
  13. 浙江大学生计算机竞赛,浙江省第十二届大学生程序设计竞赛成功举行
  14. 电工结业试卷_电工学试题.doc
  15. win10系统下360加速球不显示网速解决方法
  16. 联想拯救者笔记本摄像头打不开
  17. 火狐浏览器下载网页视频
  18. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明)(热身赛) C-Statues 题解【dp】【动态规划】
  19. MacBook上有哪些相见恨晚的神器
  20. Python如何使用Continue语句?用法示例

热门文章

  1. matlab示波器有毛刺,在使用示波器时如何消除毛刺?
  2. 原生js页面滚动顶部显示滚动总进度条效果
  3. 全向移动小车运动控制_如何让机器人进行全向移动
  4. 泛微OA前端经验总结
  5. DIY NAS服务器之OMV 5.6入坑指南(一)-openmediavalut 5.6安装
  6. IE主页遭篡改解决方法
  7. IE 主页被恶意篡改的解决方法
  8. Unrecognized Windows Sockets error: 10106: Socket creation failed
  9. [ZT]第14节:粮食战争(14)--我的评论:中国农业的必经之路?
  10. 对一张静态图片的识别