从亚马逊S3下载图片

时间:2015-11-04 09:13:43

标签: android amazon-web-services amazon-s3

我尝试将我的amazon 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
  4. 我想要做的是我想在AWS上从我的存储桶下载图像。 请指教。 谢谢

1 个答案:

答案 0 :(得分:0)

这意味着密钥不存在......或者至少在你看的地方不存在。

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