将图像上传到Amazon S3

时间:2011-09-16 17:12:07

标签: android amazon-s3

我需要将位图上传到Amazon S3。下面是我到目前为止的代码,它是在完成文档和示例代码之后构建的。

public class AmazonS3Test {

private static final String TAG = "MyApp.AmazonS3Stuff";
private static AmazonS3 mS3 = null;
private static final String mS3BucketName = "bucketname";
private static BasicAWSCredentials mCredentials = new BasicAWSCredentials(".....", "....");

private static void uploadImageToAmazonS3(String key, File file) {
    PutObjectRequest request = new PutObjectRequest(mS3BucketName, key, file);
    try {
        PutObjectResult result = getS3Instance().putObject(request);
    } catch (AmazonClientException e) {
        Log.e(TAG, "Amazon exception uploading the image to Amazon S3 " + key + " " + mS3BucketName, e);
    } catch (Exception e) {
        Log.e(TAG, "Exception uploading the image to Amazon S3 " + key + " " + mS3BucketName, e);
    }
    // TODO Handle result
}

private static AmazonS3 getS3Instance() {
    if (mS3 == null) {
        mS3 = new AmazonS3Client(mCredentials);    // <---- Exception here
    }
    return mS3;
}

}

堆栈追踪:

    Caused by: java.lang.NoSuchMethodError: org.apache.commons.httpclient.params.i.a
    at com.amazonaws.http.HttpClient.<init>(Unknown Source)
    at com.amazonaws.AmazonWebServiceClient.<init>(Unknown Source)
    at com.amazonaws.services.s3.AmazonS3Client.<init>(Unknown Source)
    at com.amazonaws.services.s3.AmazonS3Client.<init>(Unknown Source)
    at com.addapps.taxiapp.utils.Utils.getS3Instance(AmazonS3Test.java)

我不知道该异常是什么意思,或者为什么我无法获得AmazonS3的实例。

我真的很挣S3,所以如果有人能指出我的任何好资源,我真的很感激。

2 个答案:

答案 0 :(得分:1)

此异常是由于我没有在项目中拥有所有必需的AWS库。 AWS有许多不同形式的库,虽然不清楚哪些是必需的,但只有在正确的库存在之后它才会起作用。

答案 1 :(得分:0)

在内部,Amazon Web Service Client正在使用Apache commons HttpClient。从堆栈跟踪中,看起来好像存在库冲突。检查您是否在项目的其他位置使用HttpClient。最有可能的是,您使用的是与Amazon Web Service Client不同的版本。