繁体   English   中英

在Android中将图像上传到亚马逊s3的正确方法是什么?

[英]What is the right way to upload image to amazon s3 in android?

我使用了以下方式将图像上传到亚马逊s3。 但我无法在这方面取得成功。

public UploadAmazon() {
    s3Client = new AmazonS3Client(new BasicAWSCredentials(MY_ACCESS_KEY_ID,MY_SECRET_KEY));
    s3Client.createBucket(pictureBucket);
    s3Client.setBucketAcl(pictureBucket, CannedAccessControlList.valueOf("private"));
    uploadFile();
}

public void uploadFile() {
    PutObjectRequest por = new PutObjectRequest(pictureBucket,"images/"+fileName,new File(fileURI));
    PutObjectResult result = s3Client.putObject(por);
}

当这样尝试我得到跟随错误

E/AndroidRuntime(31827): FATAL EXCEPTION: AsyncTask #1
E/AndroidRuntime(31827): Process: com.xxx.yyy.zzz, PID: 31827
E/AndroidRuntime(31827): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime(31827):    at android.os.AsyncTask$3.done(AsyncTask.java:300)
E/AndroidRuntime(31827):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
E/AndroidRuntime(31827):    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
E/AndroidRuntime(31827):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
E/AndroidRuntime(31827):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
E/AndroidRuntime(31827):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/AndroidRuntime(31827):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/AndroidRuntime(31827):    at java.lang.Thread.run(Thread.java:841)
E/AndroidRuntime(31827): Caused by: com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 123456789), S3 Extended Request ID: XXXXXXXXXXXXXX
E/AndroidRuntime(31827):    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(Unknown Source)
E/AndroidRuntime(31827):    at com.amazonaws.http.AmazonHttpClient.executeHelper(Unknown Source)
E/AndroidRuntime(31827):    at com.amazonaws.http.AmazonHttpClient.execute(Unknown Source)
E/AndroidRuntime(31827):    at com.amazonaws.services.s3.AmazonS3Client.invoke(Unknown Source)
E/AndroidRuntime(31827):    at com.amazonaws.services.s3.AmazonS3Client.createBucket(Unknown Source)
E/AndroidRuntime(31827):    at com.amazonaws.services.s3.AmazonS3Client.createBucket(Unknown Source)
E/AndroidRuntime(31827):    at com.xxx.yyy.zzz.ftp.UploadAmazon.<init>(UploadAmazon.java:37)
E/AndroidRuntime(31827):    at com.xxx.yyy.zzz.NewMessageFragment$Uploading.doInBackground(NewMessageFragment.java:859)
E/AndroidRuntime(31827):    at com.xxx.yyy.zzz.NewMessageFragment$Uploading.doInBackground(NewMessageFragment.java:855)
E/AndroidRuntime(31827):    at android.os.AsyncTask$2.call(AsyncTask.java:288)
E/AndroidRuntime(31827):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/AndroidRuntime(31827):    ... 4 more

在这里提到 ,但没有成功。 帮助预测。 提前致谢

找到了方法。

AWSCredentials credentials = new BasicAWSCredentials(MY_ACCESS_KEY_ID,MY_SECRET_KEY);
TransferManager manager = new TransferManager(credentials);
Upload upload = manager.upload(pictureBucket,"images/"+fileName,new File(fileURI));

这样做..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM