欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Java Base64解码Android Base64编码上传的图片

程序员文章站 2021-12-02 19:47:47
...

今天在做Android文件上传的时候、发现用模拟表单提交的方式不太好、就换base64的方式来实现了、以前C#写接口的也是采用这种方式的、在java web(SSH)的后台应该也差不多的、把文件转换成Base64的String来传输文件、另外还必须将流转换成base64编码、然后才好传输

而且这样传输也会比较方便、一旦收到这个base64的字符串、接收端、需要将这个还原成流、保存为文件、本文主要提供Android端的编码和Java web后台的解码功能的代码实现、下面上源代码


Android端转Base64编码

/**
* @Title: encodeTobase64 
* @Description: TODO(这里用一句话描述这个方法的作用) 
* @param @param image
* @param @return    设定文件 
* @return String    返回类型 
* @throws
 */
public static String encodeTobase64(Bitmap image) {
	Bitmap immagex = image;
	ByteArrayOutputStream baos = new ByteArrayOutputStream();
	immagex.compress(Bitmap.CompressFormat.JPEG, 100, baos);
	byte[] b = baos.toByteArray();
	String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT);
	return imageEncoded;
}


Java Web 后台转码

1、使用commons-codec.jar

/** 
 * BASE64字符串TO二进制数据
 * @param bytes 
 * @return 
 */  
public static byte[] decode(final byte[] bytes) {  
	return Base64.decodeBase64(bytes);  
}

/** 
 * 二进制数据编码为BASE64字符串 
 * @param bytes 
 * @return 
 * @throws Exception 
 */  
public static String encode(final byte[] bytes) {  
	return new String(Base64.encodeBase64(bytes));  
}


2、sun.misc.BASE64Encoder

/**  
* 编码  
* @param bstr  
* @return String  
*/    
public static String encode(byte[] bstr){    
	return new sun.misc.BASE64Encoder().encode(bstr);    
}    

/**  
* 解码  
* @param str  
* @return string  
*/    
public static byte[] decode(String str){    
	byte[] bt = null;    
	try {    
	   sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();    
	   bt = decoder.decodeBuffer( str );    
	} catch (IOException e) {    
	   e.printStackTrace();    
	}
	return bt;    
}


这里要说明的是、在Java Web后台将Base64的字符串转成文件的时候需要两个Jar包、一个是commons-codec-1.10-bin、另外一个是sun.misc.BASE64Decoder.jar、为了方便大家使用、我将这两个包都放到一起了、下载下面的附件就可以使用了

源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1qWoR1uc 密码: cant