base64编码上传图片java后台接收实例
原文地址:http://blog.csdn.net/tonyfreak/article/details/72522855
思路
前台传以data:image/jpeg;base64,开头的base64编码的String字符串,后台接收字符串以后先进行base64解码 .decodeBuffer(),转换成二进制编码,然后使用字节输出流FileOutputStream()将文件保存到指定目录下。 
报下面的错误 
Error parsing HTTP request header 
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. 
要修改tomcat下sever.xml,header的大小 <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8000" protocol="HTTP/1.1" redirectPort="8443" maxHttpHeaderSize="10485760"/>
将base64编码转成二进制
// 通过base64来转化图片
imageFile = imageFile.replaceAll("data:image/jpeg;base64,", "");
BASE64Decoder decoder = new BASE64Decoder();
// Base64解码
byte[] imageByte = null;
try {
imageByte = decoder.decodeBuffer(imageFile);
for (int i = 0; i < imageByte.length; ++i) {
if (imageByte[i] < 0) {// 调整异常数据
imageByte[i] += 256;
}
}
} catch (Exception e) {
e.printStackTrace();
}
将二进制转成file文件
// 生成文件名
String files = new SimpleDateFormat("yyyyMMddHHmmssSSS")
.format(new Date())
+ (new Random().nextInt(9000) % (9000 - 1000 + 1) + 1000)
+ ".png";
// 生成文件路径
String filename = Constant.UPLOAD_PATH + files;
try {
// 生成文件
File imageFile = new File(filename);
imageFile.createNewFile();
if(!imageFile.exists()){
imageFile.createNewFile();
}
OutputStream imageStream = new FileOutputStream(imageFile);
imageStream.write(imageByte);
imageStream.flush();
imageStream.close();
} catch (Exception e) {
e.printStackTrace();
}
BASE64Encoder的过期警告,因为是sun的内部API,而不推荐使用,因为后期可能被删除的潜在风险,所以用commons-codec来代替再合适不过了
 logo = logo.replaceAll("data:image/png;base64,", "");
         Base64 decoder = new Base64();
        // Base64解码
        byte[] imageByte = null;
        try {
            imageByte = decoder.decode(logo);  
base64编码上传图片java后台接收实例的更多相关文章
- encodeURIComponent编码后java后台的解码 (AJAX中文解决方案)
		encodeURIComponent编码后java后台的解码 (AJAX中文解决方案) 同学的毕业设计出现JavaScript用encodeURIComponentt编码后无法再后台解码的问题. 原来 ... 
- Ireport5.0.1 从java后台接收list集合
		作为ireport新手,开始使用时总有很多问题,说一下今天解决的一个问题,就是怎样从java后台接收list集合并显示出列表. 1.首先要在主dataset中的Paramerters 中创建参数lis ... 
- Base64编码的java实现
		Java本身是提供了Base64编码的工具包的,做项目的时候自己实现了个,在这里记录一下: /** Base64编码数组 */ private static final String base64En ... 
- angular的$http.post()提交数据到Java后台接收不到参数值问题的解决方法
		本文地址:http://www.cnblogs.com/jying/p/6733408.html 转载请注明出处: 写此文的背景:在工作学习使用angular的$http.post()提交数据时, ... 
- 安卓发送图片文字,java后台接收
		安卓使用retrofit2 和rxjava2 url: @Multipart @POST(UrlTools.STORYUPLOAD) Observable<Result> saveRepo ... 
- java后台接收json数据,报错com.alibaba.fastjson.JSONObject cannot be cast to xxx
		从前台接收json封装的list数据,在后台接收时一直报错,com.alibaba.fastjson.JSONObject cannot be cast to xxx, 使用这种方式接收可以接收 @R ... 
- 手机端上传图片及java后台接收和ajaxForm提交
		有很多微信开发的项目在手机端需要传图片,但是又不想调用微信的上传图片接口,于是采取了如下做法: 使用ajaxForm提交文件所需js:jquery.form.js 页面代码: <%@ page ... 
- encodeURIComponent编码后java后台的解码
		解决方法一: JavaScript: window.self.location="searchbytext.action?searchtext="+encodeURICompone ... 
- Js编码和Java后台解码
		1.java.将resultMsg 转为utf-8 (1) resultMsg = URLEncoder.encode(resultMsg, "utf-8"); (2) new S ... 
随机推荐
- [TyvjP1313] [NOIP2010初赛]烽火传递(单调队列 + DP)
			传送门 就是个单调队列+DP嘛. ——代码 #include <cstdio> ; , t = , ans = ~( << ); int q[MAXN], a[MAXN], f ... 
- Redis 命令与连接【十一】
			---------------------Redis 命令--------------- Redis 命令用于在 redis 服务上执行操作. 要在 redis 服务上执行命令需要一个 redis 客 ... 
- ****HTML模板资源汇总
			站长素材: http://sc.chinaz.com/tag_moban/HTML.html wordpress模板: http://www.cssmoban.com/wpthemes/ http:/ ... 
- Apache 使用localhost(127.0.0.1)可以访问,使用本机IP(局域网)不能访问
			本机ip是:192.168.1.25,输入后提示: Forbidden You don't have permission to access / on this server 对于此问题的解决办法, ... 
- M2Crypto
			M2Crypto = Python + OpenSSL + SWIG M2Crypto is a crypto and SSL toolkit for Python. 上面是M2Crypto的READ ... 
- mysql建表语句key的含义
			CREATE TABLE `admin_role` ( `adminSet_id` varchar(32) NOT NULL, `roleSet_id` varchar(32) NOT NULL, ... 
- Atitit.auto complete  自己主动完毕控件的实现总结
			Atitit.auto complete 自己主动完毕控件的实现总结 1. 框架选型 1 2. 自己主动完毕控件的ioc设置 1 3. Liger 自己主动完毕控件问题 1 4. 官网上的code ... 
- 【LeetCode-面试算法经典-Java实现】【067-Add Binary(二进制加法)】
			[067-Add Binary(二进制加法)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given two binary strings, return thei ... 
- nyist oj 19 擅长排列的小明(dfs搜索+STL)
			擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 小明十分聪明.并且十分擅长排列计算.比方给小明一个数字5,他能立马给出1-5按字典序的全排列,假设你想 ... 
- linux下常用快捷方式
			一.终端最常用的快捷键: 1.新建终端窗口:crtl+shift+n 2.终端的切换:shift+左右箭头 3.挂起:crtl+s 4.解除挂起:crtl+q 5.清屏:crtl+l 二.命令行光标移 ... 
