2

Цель: Попытка показать изображения, которые хранятся в AWS. При вытягивании вверх/вниз в GridView отобразятся 12 изображений. Я мог бы загружать изображения с помощью:using ImageLoader download Images from AWS url android

 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 к Loader изображения, он показывает ошибку ниже: (I заменить ключ и другие вещи в URL на «что-то».)

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) 

Как я мог скачать aws url с загрузчиком изображений? Или есть другой лучший способ показать 12 или более изображений из aws? Кто-нибудь знает? Спасибо огромное!

+0

не рекомендуется использовать библиотеку для загрузки данных? –

+0

Эта ошибка выше вызвана не найденным файлом. – inmyth

+0

@NikMyers у вас есть библиотека предложений? – Maggie

ответ

1

Чтобы загрузить изображения из ковша AWS S3, вам необходимо использовать AmazonS3 Client. Затем, используя секретный ключ 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(); 
+0

Не нужно использовать S3Client для загрузки изображений с AWS S3. Вы можете сделать это с помощью подписанных URL-адресов AWS, пока URL-адреса S3 отправляют правильные заголовки ответов. – JaydeepW