APP前端使用base64上传图片,java服务端接收

2023-11-17

/**
 * 
 * @author madaha
 *
 * @param path 上传路径
 * @param img base64图片
 * @return
 * @throws IOException
 */
 public static String base64ToImgTransformation(String path, String imgDate) throws IOException {
 	//随机生成图片名
 	String imgid=UUID.randomUUID().toString().replaceAll("-", "");
 	//用于拼接图片名称+后缀格式
 	String str = "";
 	//获取图片后缀名
       try {
       	String dataPrix = "";
           //String data = "";	
		String [] d = imgDate.split("base64,");
           if(d != null && d.length == 2){
               dataPrix = d[0];
              // data = d[1];
           }else{
               throw new Exception("上传失败,数据不合法");
           }
       	
        //前台在用Ajax传base64值的时候会把base64中的+换成空格,所以需要替换回来。
		imgDate = imgDate.replaceAll(" ", "+");
              //图片后缀
		String suffix = "";
           if("data:image/jpeg;".equalsIgnoreCase(dataPrix)){//data:image/jpeg;base64,base64编码的jpeg图片数据
               suffix = ".jpeg";
               //去除base64中无用的部分,上传相应的图片的是去掉对应的即可
               imgDate = imgDate.replaceAll("data:image/jpeg;base64,", "");
           } else if("data:image/jpg;".equalsIgnoreCase(dataPrix)){//data:image/gif;base64,base64编码的gif图片数据
               suffix = ".jpg";
               imgDate = imgDate.replaceAll("data:image/jpg;base64,", "");
           } else if("data:image/png;".equalsIgnoreCase(dataPrix)){//data:image/png;base64,base64编码的png图片数据
               suffix = ".png";
               imgDate = imgDate.replaceAll("data:image/png;base64,", "");
           }else {
               throw new Exception("上传图片格式不合法");
           }
		
		// 生成文件名
		/*String files = new SimpleDateFormat("yyyyMMddHHmmssSSS")
				.format(new Date())
				+ (new Random().nextInt(9000) % (9000 - 1000 + 1) + 1000);*/
		
		BASE64Decoder base64decoder = new BASE64Decoder();
		//base64图片解码
		byte[] byteimgDate = base64decoder.decodeBuffer(imgDate);
		
		 for (int i = 0; i < byteimgDate.length; ++i) {
            // 调整异常数据
            if (byteimgDate[i] < 0) {
            	byteimgDate[i] += 256;
            }
        }
		
		//图片名
		str = imgid + suffix;
		
           //上传图片路径
           String filename = path +"\\"+ imgid + suffix;
		
		File file = new File(filename);
		file.createNewFile();
		
		if (!file.exists()) {
			file.createNewFile();
		}
		
		OutputStream out = new FileOutputStream(file);
		out.write(byteimgDate);
		out.flush();
		out.close();
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
	}
       return str;
   }

最后返回的是上传成功后的图片名称,保存到数据库即可,还有一点要注意的是前端再传值到后端的时候,一定要加密,防止xss攻击

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APP前端使用base64上传图片,java服务端接收 的相关文章

  • 无法访问类型的封闭实例。 [复制]

    这个问题在这里已经有答案了 整个代码是 public class ThreadLocalTest ThreadLocal
  • 如何迭代所有注册表项?

    我正在尝试迭代所有注册表项以查找 包含 并删除 jre1 5 0 14 值 有办法做到吗 下面的代码只是在特定键下找到jre1 5 0 14 我确实想迭代所有的键 顺便说一句 if 子句获取是否等于 jre1 5 0 14 但如果它包含 j
  • 将 spring-security 与 spring-webflux 结合使用时禁用 WebSession 创建

    我正在使用 Rest api 运行无状态 spring boot 应用程序 并希望按照所述禁用 WebSessions 的创建https www baeldung com spring security session https www
  • RSA SignatureException:签名长度不正确

    我在签署 rsa 签名时遇到问题 我有一个用私钥加密的签名 然而 当我尝试使用公钥验证它时遇到问题 我得到以下异常 java security SignatureException Signature length not correct
  • 如果基于 Spring 注解的控制器位于 jar 文件内,则该控制器无法工作

    我的子模块中有一些基于注释的控制器 这些模块作为 jar 文件部署 jar 文件中基于注释的控制器未加载到 spring 配置中 我使用 Eclipse 中的导出实用程序手动导出 jar 文件 有人遇到过这个问题吗 当您使用 Eclipse
  • 在 Hibernate 中创建 UPDATE RETURNING 查询

    在 Oracle 中 我们可以创建一个更新查询 该查询将使用 RETURNING 子句返回更新的记录 Hibernate中有类似的功能吗 除了数据库生成的值之外 Hibernate 显然不需要返回更新的实例 因为对象传递给Session s
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • SimpleDateFormat 将 lenient 设置为 false 时出现异常

    为什么这段代码会抛出无法解析日期的异常 SimpleDateFormat f new SimpleDateFormat yyyy MM dd T HH mm ss 000Z f setLenient false String dateStr
  • 在 eclipse 之外将 Spring MVC 应用程序部署到 tomcat 的幕后会发生什么?

    我猜想使用像 eclipse 这样很棒的 IDE 的一个缺点是你会忽略应用程序幕后发生的事情 我是一名 Ruby 开发人员 所以不是一名 Java 老手 所以我一直在用 java 编写一个项目 并使用 spring 框架进行 IOC 和 M
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 使用Java开发跨平台,不同平台字体缩放不同

    我正在为我的大学制作一些软件 需要一个 GUI 在它的第一个版本中 我让它使用系统外观 因此它看起来像 Linux Mac Windows 中的本机应用程序 我发现这很麻烦 因为我必须根据操作系统使所有 JLabel 具有不同的大小 无论分
  • HTTP PUT 在 Java 中上传文件

    Edit 我想我已经弄清楚如何执行二进制数据部分 仔细检查代码 但我很确定我做对了 现在 当我尝试按照中所述完成上传时遇到新错误Vimeo API 文档 http vimeo com api docs upload streaming Ed
  • 战争库中的罐子爆炸

    我们可以将分解的 jar 文件放入 war web inf 库中吗 它在 JBOSS 4 2 中对我不起作用 我收到以下错误并且无法部署应用程序 Caused by javax management RuntimeOperationsExc
  • 读/写带有特殊字符的.txt文件

    I open Notepad Windows 并写 Some lines with special characters Special 并前往另存为 someFile txt 与Encoding set to UTF 8 在Java中我有
  • Selenium - 等待网络流量

    我们将 Selenium 与 Java API 和一些 Javascript 用户扩展一起使用 我们在应用程序中使用了大量 AJAX 调用 我们的许多测试随机失败 因为有时 AJAX 调用完成得比其他时候慢 因此页面未完全加载 我们通过等待
  • 将带有 webapp 的 WAR 部署到 Maven 中央存储库是否有意义?

    这样做有意义吗 如果是 我在哪里可以找到使用简单的 Web Hello World 执行此操作的示例 当人们从 Maven 执行 Web 应用程序时 他们会使用 Jetty 来运行它吗 我想 tomcat 太重了 任何帮助将不胜感激 谢谢
  • JMockit - 初始化问题

    当我使用以下测试时 我收到警告 警告 JMockit 是按需初始化的 这可能会导致某些测试失败 请检查文档以获取更好的初始化方法 这是我的测试实现 package test import static mockit Mockit impor
  • Integer.parseInt 引发的 NumberFormatException

    嘿 我在学校上编码课 但老师没有很好地解释 所以我们必须在网上查找我所做的信息 但我无法找到代码中的错误 你能帮我吗 char end s do System out println Tipo de boleto char boleto c
  • 如何使用剪辑来减少绘画时间?

    我正在尝试使用 Clip 来减少 CPU 负载 但剪辑在屏幕上留下了一些我似乎无法摆脱的垃圾 另外 打开和关闭剪辑似乎对 CPU 负载没有影响 在任一情况下 大部分时间似乎都花在重绘管理器和绘制缓冲图像上 import static jav
  • Libgdx 和 Google 应用内购买结果

    我遵循了这些指示 https github com libgdx libgdx wiki Interfacing with platform specific code使用 ActionResolver 接口集成 Libgdx 和原生 An

随机推荐

  • [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置

    LeetCode 专题 二分查找专题 34 在排序数组中查找元素的第一个和最后一个位置 难度 中等 题目描述 给定一个按照升序排列的整数数组 nums 和一个目标值 target 找出给定目标值在数组中的开始位置和结束位置 你的算法时间复杂
  • 章节一:Vue.js简介

    1 1 介绍Vue js的基本概念和历史 Vue js是一个流行的JavaScript前端框架 用于构建交互式的Web界面 它采用了组件化的开发模式 使得构建复杂的用户界面变得简单和高效 Vue js由尤雨溪 Evan You 于2014年
  • C++杂谈 inline关键字

    1 inline 用于把函数指定为内联函数 且该关键字需要与函数定义放在一起 与函数声明放在一起没有效果 2 内联函数一般只适用于比较精简的小函数 实际上内联函数是通过牺牲空间去换取时间上的效率 如果函数过于庞大会造成大量空间的浪费 所以需
  • AWS 亚马逊云良好架构框架

    根据多年来AWS的专家们积累的经验 创建了这一份AWS良好架构框架 其中包含了以下五大支柱 安全性 Security 可靠性 Reliability 性能效率 Performance Efficiency 成本优化 Cost Optimis
  • 产品经理,要有怎样的思维方式?

    一 产品经理有哪些不同的思维方式 从直接回答问题 到先搞清楚问题 一看到问题 马上就想答案 是典型的学生思维 在职场中 面对的问题都是目标不明 信息片面 用户提的问题都是经过扭曲 具有欺骗性 不可完全听信用户的话 或者解决方案是没有标准答案
  • 10没有基于策略的qos_Win10 通过Qos提高网速、解除宽带限制的方法

    win10系统电脑上网 电脑的网速变得越来越慢了 下载文件或软件都要等很久 有时还会出现掉线的问题 检查发现网络并没有什么问题 使用其他电子设备连接宽带 网速却很快 这个可能是和windows10系统保留宽带有关系 Qos 也可能和网卡驱动
  • 4.1.3 为什么技术的尽头是艺术

    最后更新2021 08 22 我们面对太多的未知 无人能精确定义所有可能和现实 我们对自己也一无所知 即使牛顿能精确计算天体运行 也无法预言人心 我们要解决的大部分现实问题都是相对于人 作用于人这种不确定生物的问题 而所有这一切都随时间在改
  • linux的TCP服务器设计C++

    服务器设计的类 myepoll h ifndef MYEPOLL H define MYEPOLL H pragma once include
  • Appscan使用教程——安全测试

    1 appscan的启动与基本配置 说明 这里也可以先点击左下角的 完全扫描配置 选项进行扫描配置 后面再具体讲扫描配置 在 起始URL 下面输入需要启动扫描的URL 如果勾选了 仅扫描此目录中或目录下的链接 如下图 则会只扫描起始URL目
  • Opencv学习笔记-----PCA原理及OpenCV实现

    一 介绍 PCA principal component analysis 就是主分量分析 是一种常用的数据分析方法 PCA通过线性变换将原始数据变换为一组各维度线性无关的表示 可用于提取数据的主要特征分量 常用于高维数据的降维 通过数据降
  • 基于复杂环境下的雷达目标检测技术(Matlab代码实现)

    欢迎关注 个人主页 我爱Matlab 点赞 评论 收藏 养成习惯 一键三连 希望大家多多支持 一起加油 语录 将来的我一定会感谢现在奋斗的自己 摘要 随着雷达技术的迅速发展 其应用领域不断拓展 现代雷达面临着更复杂的检测环境以及更多样的目标
  • sentencepiece原理和使用

    sentencepiece为字词的切分算法 在中文就是感觉就是分词 可能有bpe 还没有确定 在英文中感觉就是bpe 算法过程 拆分句子中有两个变量 一个为词表和句子的切分序列 EM算法 句子的切分序列为隐变量 开始时 随机初始化一个词表和
  • Jupyter下的tensorboard使用

    tensorflow自带的tensorboard功能强大 图像生成 参数变化等都可以进行可视化 不过这个要单独启动才行 使用方法可参考 http wiki jikexueyuan com project tensorflow zh how
  • stm32f4xx开发板的以太网芯片DP83848与LAN8742和LAN8720的区别,以及驱动程序的区别,

    在学习stm32f4xx开的的时候 大家可能遇到 demo板 有的是DP83848 有的是LAN8742 在移植st官方例程的时候 大家可能有个疑问 他们芯片特性有啥区别 以及驱动有啥区别 下面一一介绍介绍 芯片特新的区别 1 DP8384
  • 一分钟解决QT官网无法下载的问题

    QT各个版本下载官网 进去后 我们随意找到一个版本5 14 2 但是 点击安装程序网页并没有执行下载任务 这里我尝试了各种版本 都是下载不了 清华镜像也没找到我想要的版本 下面给出一种在官网下载QT安装程序的方法 1 点击Details 2
  • 专访Sun技术专家:如何理解JavaFX的应运而生

    Java One 2007大会火遍全球 受邀参加2007大会的中国程序员的数量比起往年也提升了很多 带给我们对新鲜事物的理解也有了很大的空间 在我采访Sun的工程师叶亮先生的时候 我们专门探讨了如何理解这次大会上提出的JavaFX 网上其实
  • Linux Device Driver Interview Questions

    本文转载至 http linuxinterviewpreperation blogspot jp 2013 01 linux kernel and device drivers html Linux Device Model LDM Exp
  • 设计师常用的8款作图软件推荐

    在数字时代 绘图软件已经成为设计师不可缺少的工具 从图形设计到插图 从传统绘图到人工智能绘画 为了实现高效 方便 创意的设计 设计师需要一个强大的绘图软件 本文将介绍8个易于使用的绘图软件 每个软件都具有独特的功能和优势 以满足不同设计任务
  • clamd socket找不到错误解决

    var log maillog中有一段错误如下 Mar 7 14 41 40 bbn107 amavis 4899 04899 02 ClamAV clamd Can t connect to UNIX socket var run cla
  • APP前端使用base64上传图片,java服务端接收

    author madaha param path 上传路径 param img base64图片 return throws IOException public static String base64ToImgTransformatio