您的位置:首页 > 编程语言 > Java开发

java后台保存base64图片数据

2016-08-03 15:59 477 查看
java后台保存base64图片数据
使用byte[] bytes = new BASE64Decoder().decodeBuffer(str);需要引入sun.misc.BASE64Decoder,但在eclipse中提示如下警告:



查阅后在一篇文章中提到:

“一直以来Base64的加密解密都是使用sun.misc包下的BASE64Encoder及BASE64Decoder的sun.misc.BASE64Encoder/BASE64Decoder类。这人个类是sun公司的内部方法,并没有在java
api中公开过,不属于JDK标准库范畴,但在JDK中包含了该类,可以直接使用。但是在eclipse和MyEclipse中直接使用,却找不到该类。”

详细解释可以参照:http://blog.sina.com.cn/s/blog_5a6efa330102v8st.html

一直以来Base64的加密解密都是使用sun.misc包下的BASE64Encoder及BASE64Decoder的sun.misc.BASE64Encoder/BASE64Decoder类。这人个类是sun公司的内部方法,并没有在java
api中公开过,不属于JDK标准库范畴,但在JDK中包含了该类,可以直接使用。但是在eclipse和MyEclipse中直接使用,却找不到该类。如下图!





解决方法如图:右键项目-》属性-》构建路经





右键项目-》属性-》java bulid path-》jre
System Library-》access rules-》resolution选择accessible,下面填上** 点击确定即可!!!

 

 





 





这是英文版界面





另外网上也有用相应的替代的对象及方法,如使用

org.apache.commons.codec.binary.Base64类等。可以自己去查用!

以上内容均参考自:http://blog.sina.com.cn/s/blog_5a6efa330102v8st.html

改使用org.apache.commons.codec.binary.Base64

String base64Code = request.getParameter("base64Code");

Base64 base64 = new Base64();

byte[] bytes = base64.decodeBase64(new String(base64Code).getBytes());

public AjaxJson GetLayerList(HttpServletRequest request) throws Exception{
AjaxJson j = new AjaxJson();
String message = "";
String base64Code = request.getParameter("base64Code");
if(null == base64Code || "".equals(base64Code))
{
j.setSuccess(false);
}

String tempSavePath = sysConfigServiceI.getPathByTypeNo("2");//临时文件路径

if(null ==tempSavePath || "".equals(tempSavePath)){
j.setSuccess(false);
systemService.addLog("扫描文件失败,没有设置扫描文件临时路径", Globals.Log_Type_SCAN, Globals.Log_Leavel_WARRING);
message = "扫描文件失败,没有设置扫描文件临时路径";
j.setMsg(message);
return j;
}

if(!tempSavePath.endsWith("/") && !tempSavePath.endsWith("\\\\")){
tempSavePath += "/";
}

File logosavedir = new File(tempSavePath);// path1为存放的路径
if (!logosavedir.exists()) {// 如果不存在文件夹,则自动生成
logosavedir.mkdirs();
}
String fileName = tempSavePath + UUIDGenerator.generate()+".jpg";

try{
Base64 base64 = new Base64();
byte[] bytes = base64.decodeBase64(new String(base64Code).getBytes());

ByteArrayInputStream in = new ByteArrayInputStream(bytes);
byte[] buffer = new byte[1024];
FileOutputStream out = new FileOutputStream(fileName);
int bytesum = 0;
int byteread = 0;
while ((byteread = in.read(buffer)) != -1) {
bytesum += byteread;
out.write(buffer, 0, byteread); // 文件写操作
out.flush();
}
out.close();

j.setSuccess(true);
message = fileName;
}catch (Exception e) {
j.setSuccess(false);
message = "保存图片异常!";
}
j.setMsg(message);
return j;
}


另加若遇到上传图片超过2M时可能遇到的问题解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐