Загрузка изображения в Amazon S3 - PullRequest
2 голосов
/ 16 сентября 2011

Мне нужно загрузить растровое изображение в 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 ]

1 голос
/ 16 сентября 2011

Это исключение было вызвано тем, что в проекте не было всех необходимых библиотек AWS.AWS имеет много библиотек в разных формах, и, хотя неясно, какие из них необходимы, он не будет работать, пока не появятся нужные.

0 голосов
/ 16 сентября 2011

Внутренне клиент Amazon Web Service использует Apache commons HttpClient.Из трассировки стека это выглядит так, как будто у вас конфликт библиотеки.Проверьте, не используете ли вы HttpClient где-то еще в своем проекте.Скорее всего, вы используете версию, отличную от той, которую ожидает клиент Amazon Web Service.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...