web-dev-qa-db-ja.com

Androidギャラリーからサーバーに画像をアップロードする

Androidフォトギャラリーからサーバーに画像をアップロードしようとしています。私が行ったすべての通信はオブジェクトストリームとのやり取りでしたが、今はこれをどのように行うかについて確信がありません。ああ、私は入力ストリームを使用して、URLを使用して画像を直接指す画像をダウンロードしました。誰かが私を正しい方向に向けることができれば幸いです。

ありがとうございました

11
Arran

アプリケーションからサーバーへのuploading画像の場合、次のチュートリアルに従うことができます。

  1. POST Androidを使用してHTTPサーバーにファイルをアップロードしています。

  2. httpを使用して画像またはファイルをアップロードPOST multi-part。

上記の2つのURLは、アプリケーションからサーバーに画像をアップロードする方法を説明しています。

フォトギャラリーから画像をアップロードするには、その画像ファイルのパスが必要で、最初のURLで取得したパスを/data/file_to_send.mp3に置き換えます。

モバイルギャラリーから画像のパスを取得するには、次のコードに従います。

    @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");
    }
13
Parth Dani

私も同じ問題に直面していました。

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

私のために働いた

0
Zaartha