با سلام
دوستان اگه بخام به همراه آپلود عکس چند تا پارامتر مثل توضیحات در مورد عکس بفرستم چکار باید بکنم
اینم کد های اکتیویتی
کد پیاچپی:
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 ();
با تشکر........