title: How to upload an image from android to php using asynctask
body: <p>everyone. I am stuck on this project I am working on. I want to be able to upload an image from the android gallery, encode that image to a base64 string and send to PHP web service, as a get variable, then decode the image from the other end and do with it as I wish.</p>
  
  <p>So far I am able to select the image, from the gallery and even encode to base64 string and storing in android preference.</p>
  
  <p>The problem is, I think that not all the string is being sent to the PHP service (Some is truncated).</p>
  
  <p>Why do I think so? My Log.d showed me different strings when dumped at different locations.</p>
  
  <p>The code that gets the image and encodes is:-</p>
  
  <pre><code>private void galleryIntent()
  {
      Intent intent = new Intent();
      intent.setType("image/*");
      intent.setAction(Intent.ACTION_GET_CONTENT);
      startActivityForResult(Intent.createChooser(intent, "Please select a file"),1);
  }
  
  private String onSelectFromGalleryResult (Intent data) {
  
      if (data != null) {
          try {
              bitmap = MediaStore.Images.Media.getBitmap(getContext().getContentResolver() , data.getData()) ;
          } catch (IOException e) {
              e.printStackTrace();
          }
  
          ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream() ;
  
          bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream) ;
  
          byte[] imageBytes = byteArrayOutputStream.toByteArray() ;
  
          Log.d ("Selected Image Gallery" , Base64.encodeToString(imageBytes, Base64.DEFAULT)) ;
  
          return Base64.encodeToString (imageBytes, Base64.DEFAULT) ;
      } else {
          return null ;
      }
  }
  
  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
  
      SharedPreferences sharedPreferences =  getContext().getSharedPreferences("MyOnActivityResultPref" , Context.MODE_PRIVATE);
      SharedPreferences.Editor editor = sharedPreferences.edit() ;
  
      if (resultCode == Activity.RESULT_OK) {
  
          if (requestCode == 1) {
              /*Here we handle the image gotten from the gallery*/
              String encodedGalleryImage = onSelectFromGalleryResult(data);
  
             editor.putString("userEncodedGalleryImage" , encodedGalleryImage);
  
          } else if (requestCode == 0) {
              /*Here we handle the image that was take using the camera*/
  
          }
  
          editor.apply();
      }
  }
  </code></pre>
  
  <p>Here we call the asynctask class</p>
  
  <pre><code>private void callAsynctask () {
    SharedPreferences sp = getContext().getSharedPreferences("MyOnActivityResultPref" , Context.MODE_PRIVATE);
  
      String userQuestionAttachement = sp.getString("userEncodedGalleryImage" , "") ;
  
  Log.d("callingEncodedImage" , userQuestionAttachement) ;
  }
  </code></pre>
  
  <p>The problem I have is that the log from Log.d ("Selected Image Gallery" , Base64.encodeToString(imageBytes, Base64.DEFAULT)) ; is different from Log.d("callingEncodedImage" , userQuestionAttachement) ;</p>
  
  <p>There both have same beginning, but different endings. I expect to see the same characters.</p>
  
  <p>Can someone please help me sort it out?</p>