使用 ImageLoader 从 AWS 下载图像 url android

using ImageLoader download Images from AWS url android

目的:试图显示存储在 AWS 中的图像。当 pull up/down 时,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'。)

05-13 10:29:40.437  14053-14160/com.example.test E/ImageLoader﹕ https://s3.amazonaws.com/test/photo/1405.jpg?AWSAccessKeyId=something& something = something&Signature= something
java.io.FileNotFoundException: https://s3.amazonaws.com/test/photo/1405.jpg?AWSAccessKeyId=something& something = something&Signature= something
        at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:197)
        at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
        at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
        at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromNetwork(BaseImageDownloader.java:122)
        at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:86)
        at com.nostra13.universalimageloader.core.decode.BaseImageDecoder.getImageStream(BaseImageDecoder.java:93)
        at com.nostra13.universalimageloader.core.decode.BaseImageDecoder.decode(BaseImageDecoder.java:73)
        at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeImage(LoadAndDisplayImageTask.java:264)
        at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:237)
        at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:135)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:818)

如何使用 Image Loader 下载 aws url?或者有没有其他更好的方法来显示来自 aws 的 12 个或更多图像?有人知道吗?非常感谢!

要从AWS S3 存储桶下载图像,您需要使用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();