2012-03-19 2 views
10

Я пытаюсь загрузить изображение из галереи фотографий Androids на сервер. Все сообщения, которые я сделал, были с Object Streams, но теперь я не уверен, как я это сделаю. О, и я использовал входной поток для загрузки изображения, где вы указываете прямо на изображение, используя URL-адрес. Если бы кто-то мог указать мне в правильном направлении, это было бы оценено.Android Загрузить изображение из галереи на сервер

Спасибо

+0

Это не слишком широко, и это было действительно большая ошибка, чтобы закрыть этот вопрос – mok

ответ

13

Для загрузки изображений на сервер из вашего приложения вы можете следить за следующие учебные пособия:

  1. Uploading files to HTTP server using POST on Android.

  2. Upload image or file using http POST multi-part.

Вышеуказанный URL-адрес объяснит вам, как загружать изображения из приложения на сервер.

Для загрузки изображения из вашей фотогалереи требуется путь к файлу изображения и заменить полученный путь на /data/file_to_send.mp3 в первом URL-адресе.

Чтобы получить путь изображения из мобильной галереи Вы можете следить за следующий код:

@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); 
    } 

для загрузки изображений вы можете сделать следующий код.

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"); 
    } 
+2

обратите внимание, что data.getData(); НЕ будет работать на устройствах Samsung. Используйте предварительно вставленный Uri вместо – Droidman

+0

Ну, он работает на последних устройствах по крайней мере! –

+1

@AdnanMulla Спасибо ... за подтверждение, но нужно сказать, что, когда я опубликовал этот комментарий. Я тестировал на всем устройстве, а затем только я разместил свой комментарий здесь ... Так что если это действительно помогло вам, пожалуйста, дайте голосование, чтобы он мог также помочь другим –

0

У меня была такая же проблема.

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

Работал для меня

+0

. Если вы хотите загрузить файл (изображение), вы просто нужно 'new File (URI)'. – blackdog

+1

@blackdog Не для изображения галереи. Возвращает значение null. – Zartha