2

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);
3
  • I think it wraps the string before saving inside mysql. Commented Jan 10, 2014 at 19:23
  • You are not providing the php decode function... Commented Jan 10, 2014 at 19:23
  • I inserting as a text using PHP the encode and decode is handled by android code. Is that correct way? I am new in coding ! Commented Jan 10, 2014 at 19:25

2 Answers 2

3

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.

Sign up to request clarification or add additional context in comments.

Comments

1

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);       

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.