Android将图片从图库上传到服务器

时间:2012-03-19 12:23:24

标签: android image upload

我正在尝试将图像从Androids照片库上传到服务器。我所做的所有沟通都是使用Object Streams,但现在我不确定如何做到这一点。哦,我使用输入流下载图像,您可以使用URL直接指向图像。如果有人能指出我正确的方向,将不胜感激。

谢谢

2 个答案:

答案 0 :(得分:13)

要从应用程序上传图像到服务器,您可以按照以下教程进行操作:

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

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

  3. 以上两个网址将向您解释如何将图像从您的应用程序上传到服务器。

    要从照片库上传图片,您需要该图片文件的路径,并将获取的路径替换为第一个网址中的/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");
        }
    

答案 1 :(得分:0)

我遇到了同样的问题。

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

为我工作