我尝试将我的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();
}
}
}
我试图这样做:
我想要做的是我想在AWS上从我的存储桶下载图像。 请指教。 谢谢
答案 0 :(得分:0)
这意味着密钥不存在......或者至少在你看的地方不存在。
您是否尝试使用名称较简单的密钥进行验证? 你确定S3中的对象有.jpg扩展吗? 你在使用版本控制吗? 如果您没有设置响应标头覆盖怎么办? 如果将区域明确设置为对象所在的区域,该怎么办?