2011-09-16 4 views
2

Je dois télécharger une image bitmap sur Amazon S3. Voici le code que j'ai jusqu'à présent, construit après avoir parcouru les docs et l'exemple de code.Téléchargement d'une image sur 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; 
} 

}

Trace de la pile:

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) 

J'ai peu idée de ce que signifie exception, ou pourquoi je ne peux pas obtenir une instance de AmazonS3.

Je suis vraiment aux prises avec S3, donc si quelqu'un peut me signaler de bonnes ressources, je l'apprécierais vraiment.

Répondre

1

Cette exception était due au fait que je ne disposais pas de toutes les bibliothèques AWS requises dans le projet. AWS a beaucoup de bibliothèques sous différentes formes, et même si ce n'est pas clair, cela ne fonctionnera pas tant que les bonnes ne seront pas présentes.

0

En interne, le client Amazon Web Service utilise HttpClient commun Apache. De la pile, il semble que vous avez un conflit de bibliothèque. Vérifiez si vous utilisez HttpClient ailleurs dans votre projet. Très probablement, vous utilisez une version différente de celle attendue par Amazon Web Service Client.

Questions connexes