2015-11-04 276 views
1

我试图从我的亚马逊s3存储桶中向web浏览器显示图像。但结果给了我一个错误“指定的键不存在”。该文件存在于存储桶内。从亚马逊S3下载图片

这里是我的代码

public class TempActivity extends Activity { 
    ImageView ivTemp; 
    String key; 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_temporary); 

     ivTemp = (ImageView) findViewById(R.id.imgTemporary); 

     AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(Constants.amazonAccessKeyID, 
       Constants.amazonSecretAccessKey)); 

     key = "HJiDw6GkuS7gl82N4lCw.jpg"; 

     ResponseHeaderOverrides overrides = new ResponseHeaderOverrides(); 
     overrides.setContentType("image/jpeg"); 
     GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(Constants.amazonS3BucketName,key); 
     urlRequest.setExpiration(new Date(System.currentTimeMillis() + 3600000)); 
     urlRequest.setResponseHeaders(overrides); 
     URL url = s3Client.generatePresignedUrl(urlRequest); 
     try { 
      startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url.toURI().toString()))); 
     } catch (URISyntaxException e) { 
      e.printStackTrace(); 
     } 


    } 
} 

我试图做这样:

  1. http://aws.amazon.com/articles/SDKs/Android/3002109349624271
  2. http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/s3transferutility.html
  3. http://www.programcreek.com/java-api-examples/index.php?api=com.amazonaws.services.s3.model.GeneratePresignedUrlRequest

我想要做的就是我要t在AWS上从我的存储桶下载图像。 请指教。 谢谢

回答

0

这或者意味着钥匙不存在......或者至少不存在你正在寻找的地方。

您是否尝试过使用名称较简单的密钥进行验证? 您确定S3中的对象具有.jpg扩展名吗? 你在使用版本控制吗? 如果您未设置响应标头覆盖,该怎么办? 如果将该区域显式设置为该对象所在的区域,该怎么办?