2014-01-10 53 views
2

我将我的图像转换为字节数组然后转换为base64字符串,它完全转化并解码,但是当我使用php将该字符串保存到mysql数据库并从数据库中检索它时,它不会解码并说错误base64在android中使用Base64

这是我的代码。

PHP

$sql = "insert into users(username, password, email,mob,imagetext) 
          values ('".$username."', '".$password."', '".$email."', '".$mob."', '".$imageText."') ";        

机器人

编码

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
Bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
byte[] b = baos.toByteArray(); 
String imageEncoded = Base64.encodeToString(b,Base64.DEFAULT); 

解码

byte[] decodedByte = Base64.decode(value, Base64.DEFAULT);      
b = BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length); 
+0

我认为它包装内的MySQL保存之前的字符串。 – Punit

+0

你不提供PHP的解码功能...... – Leonardo

+0

我将作为使用PHP编码和解码是由Android代码来处理文本。那是正确的方法吗?我是编码新手! – Punit

回答

0

尝试改变从Base64.DEFAULT Base64编码选项。 您应该使用Base64.URL_SAFE,它将使用发送到您的php脚本时不需要进行url编码的字符。 还可以考虑使用Base64.NO_WRAP,它可以防止将MIME新行添加到base 64输出中。

0

基于上面的回答, 编码:

String imageEncoded = Base64.encodeToString(b,Base64.NO_WRAP | Base64.URL_SAFE); 

解码:

byte[] decodedByte = Base64.decode(value, Base64.NO_WRAP | Base64.URL_SAFE);  
相关问题