Wednesday 12 September 2012

Upload Image from Android to Server using PHP

Android Activity for upload image on Server:--
package com.santosh.geo_map_social_app;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;

public class MainActivity extends Activity {

 InputStream is;

 @Override

 public void onCreate(Bundle icicle) {
  super.onCreate(icicle);
  setContentView(R.layout.activity_main);
  new  AddTask().execute();
 }
 class AddTask extends AsyncTask<Void,Void, Void> {

  private ProgressDialog dialog;
  protected void onPreExecute() {
   dialog = new ProgressDialog(MainActivity.this);
   dialog.setMessage("Retrieving data ...");
   dialog.setIndeterminate(true);
   dialog.setCancelable(false);
   dialog.show();
  }

  protected Void doInBackground(Void... unused) {
   Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);
   ByteArrayOutputStream bao = new ByteArrayOutputStream();
   bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 90, bao);
   byte [] ba = bao.toByteArray();
   String ba1=Base64.encodeBytes(ba);
   ArrayList<NameValuePair> nameValuePairs = new
     ArrayList<NameValuePair>();
   nameValuePairs.add(new BasicNameValuePair("image",ba1));
   try{
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new
      HttpPost("http://192.168.1.10:80/GK/ImageUpload.php");
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    is = entity.getContent();
   }catch(Exception e){
    Log.e("log_tag", "Error in http connection "+e.toString());
   }
   return(null);
  }

  protected void onProgressUpdate(Void... unused) {
   // grid_main.setAdapter(imgadp);
  }

  protected void onPostExecute(Void unused) {
   dialog.dismiss();

  }
 }


}

 You Need To Download Base64.java file for image upload. you can download from below link
 http://iharder.sourceforge.net/current/java/base64/  
 
 
PHP Page On Server Site:-- 

<?php

$base=$_REQUEST['image'];

echo $base;

// base64 encoded utf-8 string

$binary=base64_decode($base);

// binary, utf-8 bytes

header('Content-Type: bitmap; charset=utf-8');

// print($binary);

//$theFile = base64_decode($image_data);

$file = fopen('test.jpg', 'wb');

fwrite($file, $binary);

fclose($file);

echo '<img src=test.jpg>';

?>
 
 

2 comments:

  1. Thank you very much it helped alot..!! :)

    ReplyDelete
  2. How do I incorporate this file Base64.java to my Android project (using eclipse)? Any steps? Thanks!

    ReplyDelete