I need to upload JSON to the server, so I tried to encode it using base64, and then send it via JSON, but when decoding the image on the server, the end of the image will be damaged. I even tried base64 online for image converters, and the result is the same.
Here is my activity code, where I encode a base64 image after selecting it from a gallery or camera.
package com.paaltao.activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import com.android.volley.AuthFailureError; import com.android.volley.NetworkError; import com.android.volley.NoConnectionError; import com.android.volley.ParseError; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.ServerError; import com.android.volley.TimeoutError; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.github.mrengineer13.snackbar.SnackBar; import com.kbeanie.imagechooser.api.ChooserType; import com.kbeanie.imagechooser.api.ChosenImage; import com.kbeanie.imagechooser.api.ImageChooserListener; import com.kbeanie.imagechooser.api.ImageChooserManager; import com.paaltao.R; import com.paaltao.classes.SharedPreferenceClass; import com.paaltao.network.VolleySingleton; import org.json.JSONException; import org.json.JSONObject; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import cn.pedant.SweetAlert.SweetAlertDialog; import static com.paaltao.extras.Keys.UserCredentials.KEY_ACCESS_TOKEN; import static com.paaltao.extras.Keys.UserCredentials.KEY_DATA; import static com.paaltao.extras.Keys.UserCredentials.KEY_EMAIL; import static com.paaltao.extras.Keys.UserCredentials.KEY_ERROR_CODE; import static com.paaltao.extras.Keys.UserCredentials.KEY_ERROR_NODE; import static com.paaltao.extras.Keys.UserCredentials.KEY_HAS_SHOP; import static com.paaltao.extras.Keys.UserCredentials.KEY_MESSAGE; import static com.paaltao.extras.Keys.UserCredentials.KEY_OPEN_SHOP; import static com.paaltao.extras.Keys.UserCredentials.KEY_SELLER_ID; import static com.paaltao.extras.Keys.UserCredentials.KEY_SIGN_IN; import static com.paaltao.extras.Keys.UserCredentials.KEY_TOKEN; import static com.paaltao.extras.Keys.UserCredentials.KEY_VENDOR; import static com.paaltao.extras.urlEndPoints.BASE_URL; import static com.paaltao.extras.urlEndPoints.OPEN_SHOP; import static com.paaltao.extras.urlEndPoints.SIGN_UP; import static com.paaltao.extras.urlEndPoints.UAT_BASE_URL; public class OpenShopActivity extends AppCompatActivity implements ImageChooserListener { Button selectCoverButton; private ImageChooserManager imageChooserManager; String imagePath,sellerID,accessToken,encodedImage; ImageView coverImageArea; private SweetAlertDialog dialog; private Bitmap myBitmap; private EditText shopName,aboutShop,contactNo,shopAddress,city,state,postalCode,shopURL; SharedPreferenceClass preferenceClass; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_open_shop); Toolbar toolbar = (Toolbar) this.findViewById(R.id.app_bar); toolbar.setTitleTextColor(Color.WHITE); this.setSupportActionBar(toolbar); this.setTitle("open a shop!"); initialize(); onItemClick(); } @Override public boolean onCreateOptionsMenu(Menu menu) {
The base64 encoded string I get in the log is
/ 9J / 4AAQSkZJRgABAQAAAQABAAD / 2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL / 2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL / wAARCAJQBBwDASIAAhEBAxEB / 8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL / 8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4 + Tl5ufo6erx8vP09fb3 + PN6 / 8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL / 8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3 + PN6 / 9oADAMBAAIRAxEAPwDwgKVPWplwVxnn + dWp7ITHcp2t / OqrxtGxVxyKhNM0qUpQ3GkY4pRxSh2H8VLvPcD8qoyGbAenWpY7jPySjjsfSmLgk / Lg0EA5ppgSSwbRkYI9RVdsgjNSxyvGcfeT0qZ4UuF3xEZHUd6YEIPHvQTxRgjINLxjNJIB KDzQP Sl9aBgBkUAdeaFozg0WEL3pPpS44PNJjjtQgDvR1FLtx3poGKAHc801qeKaeaAQ08I1OjGE6Ux8 + WfrT1zt96AArkEUkbZwD1FOpjArhx260wQ5l2njoaQHing7l65qMgqcUDJo2wOtEq7l3AfWkjG4HANSDuCODTEVQOaUZ59qc6bT0pqnPP50gFHY04c5B60nqKUE4z + dALQcoHUml2AZwwJNMH3jz + VKckH2oAXacdM4pQMHNIMggg0oZjkZzj1oAQHkjHNLniniQd0GDR + 7Ochh9DmgBo64zS5yD3pyxxkcSgf7wP8A9eneQQSQ6tn0NADCPSnIcdRwOxoMTjqpH4UD3oAmURuCWUrn + 7Uy2yn7km72PBqCMBlI9KtwRbsY5oJsMaAqMFSD7ipI4 / lOBk1oQW0hUgA4x3qwunF0JKYPbHFMCfwy1tbQ6kXnjhuXi2QlxnJ7j9BT / Ek6TC2gRY2aKIGR1HViOmeen + NU4rSSOdGKggN371DcpI1zOrLtUscHHvQp9At1MHZnkipMYPWpJIyoJKn8qiIxzmga1GOBg1EQc9eKdzznFBHPGcUrgCSsm4Zyp6g9DQY0cblbY390 / wBKj9aDzimMU7kOHGKAwAJpRIQCGwyjsaXyg2Sh59D1oEmMBwv1pBjODQMg4IxQP4uaQwAxml9qPTmk65 / KgAP3sdBQDwc / hSDJU0u3AoAAQBQDknFNwc0oPNABj5frSY5pc56mk7daBADnmk7Yo / lSA0AKOtSQqWNRqMnAq5BEzkKgyScAUhj4LR7lyqcY71b / ALMlQZ38fSuz8KeE3u7eQ8bQOWJ6mr83gm + QzN5bGNRlNpBz9fyp + xm1dEqaR5NOrJcSB + oOKjwMYq1qbq + oXDIwZd2AQeDjjI / KqowMk0loUKB + VHfNHagUgQYPSjr9KXHWm + vpQAuMA + tIOmKUrz15ox1 / nRcAHU0nTjHWl o6ZI60AAXt0oyDz1o68mkA96EAd6DyaU HAODmkFMA6DmjtQDmjr36UwEAzxR + NKMjOKBGT / AI0ANz6UoBPSpPLAPJ4pwCgHFAEaIcfSn4PFOU4zx + dAzj2oQtBuzPan7BGvJ + tBKx8k5PYVXdmYkk8UDFeYEnHT1NNLE / xU3b1pQDQAZ5pRRgmlx70AAB5zTxgDrQBz0phOKBXFz3pAT0pR3pQuQaAGL941OYx5Oe9RRrwTVnGLccGkMqnjPOaOaeVpApoAaAW4FP2hPrTgAmTjJphJY0xbjDkk80D5RS5K00tnNACdM00cg05RnrTsAA1IyMDNOCgA807txTTk8CmAetA60oXHU04EAHaM + 5osALGWPLBR6mmkhSQvPuaGI / ibNND4PA49aFoA4KWO4nP1owOcmk3FuKAODmgAAHUUEUopD9aAEx70uOM0UAUwEzQT1oxjNJzk0gEpfwoA60nQdaAF6Zpppx6dab170CNwcfT2pssKSrhhn3p2MnFOFcq0PYcU9zKubZ4T6r60xOnXIrYZFZSDzmqU9mV5QZHp6VrGd9Diq4ZrWJVI9DQDx9KTnJFL6HpWiOWwZz1pu5oWDpx7VJgHPH1qOT7tFwLcbxXYIPyP / OoZY2iOGBxUajPPQjvVqO5DgR3A46BqoLFcdDR1q2LYRBycMjKcNVQHrStYAA5JpVHvRSrxTQw6ZoGMUpHGKQDrSEJjIPpQBweKXFJ0zQAq96TjB9aWkxkHpQMY33APepB92oiOQM96lzgGhCG5FHsaAOaXvTAjB2Njsae43KSOopSm8EflSRuRkHqKAGo + 3pU6MT361DIgHI6Gljb1pgTyJvj9xVfgE5q1G2RioZo9pNICPHBxSjjHpTFJp + ePY0AKOhB7UueOOfWmA5I / WnKOOvegBy9xTg3IP4GmZzz6UdOKAHY6jsKULTAe + acDwc0ALjApcnGc03J4pBnnmgCYM4Bw3Wnqx2gHn8 KiU / qKcDQBZTA424PtWnZKjMo3MP1rKi + XnrnrWrp2GIAHe kB6J4R8Hza8HMCgopG5jwFruY / hXCttKZZx5oAMYj5B9Qc / 5 / lR8L5PsehxEKM3dyUP0VR / Vq9KZQ4ww4p3FY8pv / hQs219Ou1dDIATIpUgevviuE1zwzcaNqE0E4RmU / ejbIP + fevoqa2LQlIXMRHIIrjtU8GwX + mXJc7LyFmYPnh1681LHY + fL6Fg75wRWJPEBuIIGP1rtdf0OeC5dfKJwf4T1rkb6MpkbSCPWiLJSMwocccj2pP4ufSnY5pgbqOo96saEHA / GjIz0pflPUYNG3k4IpDGYG00uz3oIwRxS54JosAoZip3ruH6il8n5NyHdz93vUe7GB3NOEhwSO1O4rCHOOnNC8HGKlEkbtiZSePvL1psibSWjIdOxHaiwXGE8kDpTf8APSjBP / 16XmkFhPUUgwB / KjkA9jSDk0IYdMik6UpHFJxk0AGeKOtIRke9PjTJ9hQA + NQc8da6Tw5o8899F5kZVXA2E / g / ACrAjXcwAr1rR4IxYWstsVX90o3KeenPNLmUXditc3bBZ7SJLe0gHlIO46 + 9cv8AEPxtNbae + jwnbczriZh1SM9vq38vqKzfFfiS90O5tlsrtRLkl1OGx6ZB6da8 / urua + upbm4cyzSsWd26sfWuh4hONokRhbcgPU0ClAzSbeuK5zQXHFA60AGgA88UgAdDRijPPApATQA4fr60dv6U0d6X8aYwB / Ok4ANLgk8DigISaEIQDrSetP2AdTS5Ve2aAIwM0uxqUvxxSGQt1NAhwUdzQSue9R7iBQOB60xj / MweAKTLEnJpAPU08d + KAEAA6U4c + 9KqbjgVMqKiMzHao7 + v0ppCuQOCi5pnmkqQevrTpZd5IUYQdB601lZskKcfSkFhnJpMe9LjFA7jvQMQetKMjpS4 / WnAe1AhBk0vTPFOyOnU hpw5FKB3H60CEAOOlOAypP8qlVc9v0qaK0MhwOvp60rjKkUZIIxV + K13xYdwoB71ctdJlds 7MCrR0mVh8y8CpvZhYxPs6biFbePp Thank youZxitpUMPUpUpUpUpUpUpUpUnUp
But this is a spoiled image. Need help!
source share