2011-09-16 201 views
2

我需要將位圖上傳到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,所以如果任何人都可以指向我任何好資源,我會非常感激。

回答

1

此異常是由於我沒有在項目中使用所有必需的AWS庫而造成的。 AWS有許多不同形式的庫,雖然不清楚哪些是必需的,但只有在正確的庫存在之前它纔會起作用。

0

在內部,亞馬遜網絡服務客戶端使用Apache公共HttpClient。從堆棧跟蹤看起來好像你有一個庫衝突。檢查您的項目中是否在其他地方使用HttpClient。很可能,您正在使用的版本與Amazon Web Service Client所期望的版本不同。