简体   繁体   中英

Using Base64 in android

I am converting my image to byte array then to base64 string it coverts and decodes perfectly but when i saves that string to mysql database using php and retrieves it from database it do not decodes that and says bad base64

Here is my code.

php

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

android

encode

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

Decode

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

Try changing the Base64 encoding options from Base64.DEFAULT. You should use Base64.URL_SAFE which will use characters that wont need to be url encoded when sent to your php script. Also consider using Base64.NO_WRAP which will prevent MIME new lines from being added to your base 64 output.

Based on above answer, Encode :

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

Decode :

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM