کلیدستان

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

 
       }
 
   });

}

@
Override
protected void onActivityResult(int requestCodeint resultCodeIntent data) {
 
   // TODO Auto-generated method stub
 
   super.onActivityResult(requestCoderesultCodedata);

 
   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,filePathColumnnullnullnull);
 
       cursor.moveToFirst();

 
       int columnIndex cursor.getColumnIndex(filePathColumn[0]);
 
       String picturePath cursor.getString(columnIndex);
 
       cursor.close();


 
       Bitmap bitmap=BitmapFactory.decodeFile(picturePath);

 
       ImageView im = (ImageViewfindViewById(R.id.imgBox);
 
       im.setImageBitmap(bitmap);

 
       /*
         * Convert the image to a string
         * */
 
       ByteArrayOutputStream stream = new ByteArrayOutputStream();
 
       bitmap.compress(Bitmap.CompressFormat.PNG90stream); //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<NameValuePairnameValuePairs = 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.mainmenu);


 
   return true;
}
public class 
uploadImageToPhp extends AsyncTask<JSONObjectVoidVoid>
{
 
   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(completeServerAddressdataToSend);




 
       return null;
 
   }

 
   public void communicator(String urlString,String dataToSend2)
 
   {
 
       String result=null;

 
       try
        
{
 
           URL url=new URL(urlString);
 
           URLConnection conn=url.openConnection();

 
           HttpURLConnection httpConn=(HttpURLConnectionconn;
 
           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,filePathColumnnullnullnull);
 
       cursor.moveToFirst();

 
       int columnIndex cursor.getColumnIndex(filePathColumn[0]);
 
       String picturePath cursor.getString(columnIndex);
 
       cursor.close(); 


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