使用ImageLoader从AWS url android下载图像

使用ImageLoader从AWS url android下载图像,android,amazon-web-services,amazon-s3,universal-image-loader,Android,Amazon Web Services,Amazon S3,Universal Image Loader,目的:尝试显示存储在AWS中的图像。向上/向下拉时,GridView中将显示12个图像。我可以通过以下方式下载图像: try { InputStream in = new java.net.URL(url).openStream(); mIcon11 = BitmapFactory.decodeStream(in); } catch (Exception e) { Log.e("Error",

目的:尝试显示存储在AWS中的图像。向上/向下拉时,GridView中将显示12个图像。我可以通过以下方式下载图像:

      try {
            InputStream in = new java.net.URL(url).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);

        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        bmImage.setImageBitmap(mIcon11);
这意味着url可以工作。然而,问题是当我将url传递给图像加载器时,它会显示以下错误:(我将url中的键和其他内容替换为“something”。)


如何使用图像加载器下载aws url?或者有没有其他更好的方式来显示12张或更多来自aws的图像?有人知道吗?非常感谢你

要从AWS S3 bucket下载图像,您需要使用AmazonS3客户端。然后使用awskey和aws密钥,您可以使用以下代码下载任何图像

   Resources res = mContext.getResources();
            String awsKey = res.getString(R.string.aws_key);
            String awsSecretKey = res.getString(R.string.aws_secret_key);
            String awsBucketName = res.getString(R.string.aws_bucket_name);
            AmazonS3Client s3Client = new AmazonS3Client(
                    new BasicAWSCredentials(mContext.getResources().getString(R.string.aws_key),
                            mContext.getResources().getString(R.string.aws_secret_key)));

            S3ObjectInputStream content = s3Client.getObject(awsBucketName, url).getObjectContent();

您介意使用库进行下载吗?上面的错误是由于找不到文件造成的。@Nikmeyers您对库有什么建议吗?@InMystream是的,因为我可以使用InputStream in=new java.net.url(url.openStream())使用相同的url下载图像;mIcon11=BitmapFactory.decodeStream(in);我真的不知道AWS中的错误来自哪里,图像(以及它们所在的目录)是否设置为可公开访问?您必须明确设置,无论是在上传到它时,还是通过属性菜单,menuNo都需要基本上使用S3Client从AWS S3下载图像。您也可以使用AWS签名的URL执行此操作,只要S3 URL发送正确的响应头。
   Resources res = mContext.getResources();
            String awsKey = res.getString(R.string.aws_key);
            String awsSecretKey = res.getString(R.string.aws_secret_key);
            String awsBucketName = res.getString(R.string.aws_bucket_name);
            AmazonS3Client s3Client = new AmazonS3Client(
                    new BasicAWSCredentials(mContext.getResources().getString(R.string.aws_key),
                            mContext.getResources().getString(R.string.aws_secret_key)));

            S3ObjectInputStream content = s3Client.getObject(awsBucketName, url).getObjectContent();