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

标签 android image upload

<分区>

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

谢谢

最佳答案

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

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

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

以上两个 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");
    }

关于Android从图库上传图片到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9770122/

相关文章:

javascript - 从客户端上传到 backblaze

android - 调试不在 Play 商店中的 android 应用程序(日志收集)

android - 任何人都可以帮助我让这个 map 应用程序正常工作吗?

python - 当存在重叠干扰时如何使用 OpenCV 获取矩形框轮廓

javascript - JS 持续加载直到img src改变

python - 使用 Selenium 不使用 API 将图像发布(上传)到 Instagram

html - 如何在 HTML 标记中对 &lt;script&gt; 标签与 &lt;style&gt; 标签进行排序以获得最佳结果

java - 如何从java发送html页面

javascript - 如何在 Android 3.1 上以编程方式滚动 HTML DIV?

android - 如何通过触摸在android中拖动图像?