آپلود عکس در اندروید

با سلام
دوستان اگه بخام به همراه آپلود عکس چند تا پارامتر مثل توضیحات در مورد عکس بفرستم چکار باید بکنم
اینم کد های اکتیویتی
کد پی‌اچ‌پی:
public class  MainActivity  extends  Activity  { private static  int RESULT_LOAD_IMAGE  =  1 ; @ Override protected  void onCreate ( Bundle savedInstanceState ) {      super . onCreate ( savedInstanceState );      setContentView ( R . layout . activity_main );      Button btnSelectImage =( Button )  findViewById ( R . id . uploadButton );      btnSelectImage . setOnClickListener (new  OnClickListener () {           @ Override         public void onClick ( View v ) {          Intent i =new    Intent ( Intent . ACTION_PICK , android . provider . MediaStore . Images . Media . EXTERNAL_CONTENT_URI );          startActivityForResult ( i ,  RESULT_LOAD_IMAGE );           }       }); } @ Override protected  void onActivityResult ( int requestCode ,  int resultCode ,  Intent data ) {       // TODO Auto-generated method stub      super . onActivityResult ( requestCode ,  resultCode ,  data );      if  ( requestCode  ==  RESULT_LOAD_IMAGE  &&  resultCode  ==  RESULT_OK  &&  data != null ) {          Uri selectedImage = data . getData ();          String []  filePathColumn ={ MediaStore . Images . Media . DATA };          Cursor cursor  =  getContentResolver (). query ( selectedImage , filePathColumn ,  null ,  null ,  null );          cursor . moveToFirst ();          int columnIndex  =  cursor . getColumnIndex ( filePathColumn [ 0 ]);          String picturePath  =  cursor . getString ( columnIndex );          cursor . close ();          Bitmap bitmap = BitmapFactory . decodeFile ( picturePath );          ImageView im  = ( ImageView )  findViewById ( R . id . imgBox );          im . setImageBitmap ( bitmap );           /*          * Convert the image to a string          * */          ByteArrayOutputStream stream  = new  ByteArrayOutputStream ();          bitmap . compress ( Bitmap . CompressFormat . PNG ,  90 ,  stream );  //compress to which format you want.          byte  []  byte_arr  =  stream . toByteArray ();          String image_str  =  Base64 . encodeToString ( byte_arr , Base64 .DEFAULT);           /*          * Create a name value pair for the image string to be passed to the server          * */          ArrayList < NameValuePair >  nameValuePairs  = new   ArrayList < NameValuePair >();                      nameValuePairs . add (new  BasicNameValuePair ( "image" , image_str ));          JSONObject jsonString =new  JSONObject ();          try  {              jsonString . put ( "img" ,  image_str );           } catch ( JSONException e ) {               // TODO Auto-generated catch block              e . printStackTrace ();           }          new uploadImageToPhp (). execute ( jsonString );       } } @ Override public  boolean onCreateOptionsMenu ( Menu menu ) {       // Inflate the menu; this adds items to the action bar if it is present.      getMenuInflater (). inflate ( R . menu . main ,  menu );      return true ; } public class  uploadImageToPhp  extends  AsyncTask < JSONObject ,  Void ,  Void > {      String dataToSend = null ;      public  static final  String prefix = "http://" ;                                                          //prefix of the urls      public  static final  String server_ip = "172.16.26.155" ;                                                     //the ip address where the php server is located          public  static final  String completeServerAddress = prefix + server_ip + "/test_upload/upload_image.php" ;                    //Exact location of the php files       @ Override     protected Void doInBackground ( JSONObject ...  params ) {          dataToSend = "image=" + params [ 0 ];          communicator ( completeServerAddress ,  dataToSend );          return null ;       }      public void communicator ( String urlString , String dataToSend2 )       {          String result = null ;          try          {              URL url =new  URL ( urlString );              URLConnection conn = url . openConnection ();              HttpURLConnection httpConn =( HttpURLConnection )  conn ;              httpConn . setRequestProperty ( "Accept" ,  "application/json" );              httpConn . setRequestProperty ( "accept-charset" ,  "UTF-8" );              httpConn . setRequestMethod ( "POST" );                       httpConn . connect ();               //Create an output stream to send data to the server              OutputStreamWriter out =new  OutputStreamWriter ( httpConn . getOutputStream ());              out . write ( dataToSend2 );              out . flush ();              int httpStatus  =  httpConn . getResponseCode ();                          System . out . println ( "Http status :" + httpStatus );              if ( httpStatus == HttpURLConnection . HTTP_OK )               {                  Log . d ( "HTTP STatus" ,  "http connection successful" );                  BufferedReader in  = new  BufferedReader (new  InputStreamReader ( httpConn . getInputStream (), "UTF-8" ));                  StringBuilder sb  = new  StringBuilder ();                  String inputLine ;                  while  (( inputLine  =  in . readLine ()) !=  null )                   {                      System . out . println ( inputLine );                      sb . append ( inputLine + "\n" );                    }                  in . close ();                  result = sb . toString ();                                         try                  {                       //jsonResult = new JSONObject(result);                   }                  catch ( Exception e )                   {                       Log . e ( "JSON Parser" ,  "Error parsing data "  +  e . toString ());                   }               }              else              {                  System . out . println ( "Somthing went wrong" );               }           } catch ( MalformedURLException e ) {               // TODO Auto-generated catch block              e . printStackTrace ();           } catch ( IOException e ) {               // TODO Auto-generated catch block              e . printStackTrace ();           }       } } } 


اینم از کد های upload.php
کد پی‌اچ‌پی:
$recievedJson = $_REQUEST [ 'image' ]; $imageContent = ( $recievedJson , true );   $base = $imageContent [ "img" ];   $binary = base64_decode ( $base );  echo  $binary ; header ( 'Content-Type: bitmap; charset=utf-8' ); $file  =  fopen ( 'uploaded_image.jpg' ,  'wb' ); fwrite ( $file ,  $binary ); fclose ( $file ); 

لطفا اگه میشه کد های قسمت هم برام توضیح بدین چطجوری ادرس عکس رو بدست میاره
کد پی‌اچ‌پی:
Uri selectedImage = data . getData ();          String []  filePathColumn ={ MediaStore . Images . Media . DATA };          Cursor cursor  =  getContentResolver (). query ( selectedImage , filePathColumn ,  null ,  null ,  null );          cursor . moveToFirst ();          int columnIndex  =  cursor . getColumnIndex ( filePathColumn [ 0 ]);          String picturePath  =  cursor . getString ( columnIndex );          cursor . close (); 


با تشکر........