web-dev-qa-db-fra.com

Android télécharger l'image de la galerie sur le serveur

J'essaie de télécharger une image de la galerie de photos Androids sur un serveur. Toute la communication que j'ai faite a été avec Object Streams, mais je ne sais pas comment procéder. Oh et j'ai utilisé un flux d'entrée pour télécharger une image dans laquelle vous pointez directement sur l'image à l'aide d'une URL. Si quelqu'un pouvait me diriger dans la bonne direction serait apprécié.

Je vous remercie

10
Arran

Pour uploading images sur un serveur depuis votre application, vous pouvez suivre les tutoriels suivants:

  1. Chargement de fichiers sur un serveur HTTP à l'aide de POST sur Android.

  2. Téléchargez une image ou un fichier avec http POST _ en plusieurs parties.

Les deux URL ci-dessus vous expliqueront comment télécharger des images de votre application sur le serveur.

Pour télécharger une image de votre galerie de photos, vous devez connaître le chemin de ce fichier image et remplacer le chemin obtenu par /data/file_to_send.mp3 dans la première URL.

Pour obtenir le chemin de l'image depuis la galerie mobile, vous pouvez suivre le code suivant:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        b1 = (Button)findViewById(R.id.Button01);

        b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                openGallery(SELECT_FILE1);
            }
        });
    }

    public void openGallery(int req_code) {

        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent,
                               "Select file to upload "), req_code);
    }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (resultCode == RESULT_OK) {
            Uri selectedImageUri = data.getData();

            if (requestCode == SELECT_FILE1) {
                selectedPath1 = getPath(selectedImageUri);
                System.out.println("selectedPath1 : " + selectedPath1);
            }

            if (requestCode == SELECT_FILE2) {
                selectedPath2 = getPath(selectedImageUri);
                System.out.println("selectedPath2 : " + selectedPath2);
            }

            tv.setText("Selected File paths : " + selectedPath1 + "," + selectedPath2);
        }
    }

    public String getPath(Uri uri) {

        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();

        return cursor.getString(column_index);
    }

pour télécharger des images, vous pouvez utiliser le code suivant.

    ImageView image = (ImageView)findViewById(R.id.image);
    if(!ImageUrl.equals("no image")) {          
        try {
            image.setImageDrawable(grabImageFromUrl(ImageUrl));

        } catch(Exception e) {     
          }  
    } 

    private Drawable grabImageFromUrl(String url) throws Exception {
          return Drawable.createFromStream((InputStream)new URL(url).getContent(), "src");
    }
13
Parth Dani

Je faisais face au même problème. 

Bitmap image = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);

A travaillé pour moi

0
Zartha