Android将图像从图库上传到服务器[关闭]

Posted

技术标签:

【中文标题】Android将图像从图库上传到服务器[关闭]【英文标题】:Android upload image from gallery to server [closed] 【发布时间】:2012-04-03 22:27:10 【问题描述】:

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

谢谢

【问题讨论】:

不是太宽泛,关闭这个问题确实是一个很大的错误 【参考方案1】:

对于从您的应用程序上传图像到服务器,您可以遵循以下教程:

    Uploading files to HTTP server using POST on Android.

    Upload image or file using http POST multi-part.

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

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

【讨论】:

请注意 data.getData();不适用于三星设备。改用预先插入的 Uri 它至少可以在最新的设备上运行! @AdnanMulla 谢谢...确认,但需要告诉你,当我发表此评论时。我已经在所有设备上进行了测试,然后只有我在这里发表了我的评论......所以如果它真的对你有帮助,请投赞成票,这样它也可以帮助其他人【参考方案2】:

我也遇到了同样的问题。

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

为我工作

【讨论】:

如果你想上传文件(图片),你只需要new File(URI) @blackdog 不适用于图库图片。返回空值。

以上是关于Android将图像从图库上传到服务器[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Android:上传到服务器的图像始终为 0 字节

如何使用 asynctask 将图像从 android 上传到 php

如何在android中以编程方式上传到服务器之前减小视频的大小[关闭]

将图像从图库上传到 Firebase 存储时应用程序崩溃

获取Android中所选图库图像的文件路径和文件名

将图像从库中上传到服务器