2011-11-08 1 views
2

Je suis intéressé par le téléchargement de données (images principalement) à partir de mon application Android sur Amazon S3, puis le stockage de sa référence dans un Amazon SimpleDB (avec d'autres données). Est-ce que quelqu'un a un exemple de travail qui prend une image et des données (texte, etc.) d'une application et télécharge l'image sur S3 et stocke la référence à l'image et les données dans un SimpleDB pour récupération ultérieure?Quelqu'un at-il un exemple d'utilisation d'Amazon S3 et SimpleDB avec Android?

Je suis passé par Amazon SDK pour Android et en regardant leurs exemples et en lisant ce que je peux trouver sur le sujet, mais je n'arrive pas à trouver un bon exemple que je peux comprendre et mettre en œuvre.

Merci!

Shannon

Répondre

-1
  1. télécharger S'il vous plaît Bucket Explorer et SDExplorer. Bucket Explorer est l'outil pour Amazon s3 et SDB Explorer est un outil pour Amazon SimpleDB. Ils peuvent être téléchargés gratuitement pendant 30 jours.
  2. Essayez de upload image uisng Bucket Explorer.
  3. Essayez de Generate web url of multipe uploaded image on single click.
  4. Copiez toutes les URL dans le pavé de texte du système de fichiers local et enregistrez le fichier au format CSV.
  5. Exécutez SDB Explorer et Import data from CSV.

Pour plus référence -

  1. http://www.sdbexplorer.com/documentation/simpledb--more-simpledbexplorer-product-manual-detail.html
  2. http://www.bucketexplorer.com/documentation/amazon-s3--more-product-manual-detail.html
  3. http://gallery.bucketexplorer.com/
  4. http://gallery.sdbexplorer.com/
0

Utilisez ci-dessous la classe pour télécharger des images sur le serveur amazon s3 et obtenir la chaîne URL de l'image téléchargée. assurez-vous que vous donnez le bon nom de région. pour identifier votre nom région reffer ci-dessous URL

http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

et de mettre cette dépendance à build.gradle

Compile 'com.amazonaws: aws-android-sdk-s3: 2.3.1'

import android.content.Context; 
import android.os.AsyncTask; 
import android.util.Log; 

import com.amazonaws.auth.BasicAWSCredentials; 
import com.amazonaws.regions.Region; 
import com.amazonaws.regions.Regions; 
import com.amazonaws.services.s3.AmazonS3Client; 
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest; 
import com.amazonaws.services.s3.model.PutObjectRequest; 
import com.amazonaws.services.s3.model.ResponseHeaderOverrides;  
import java.io.File; 
import java.net.URL; 
import java.util.ArrayList; 
import java.util.Date; 


public class UploadImageToAmazonServer extends AsyncTask<String, Integer, String> { 

    private Context mContext; 
    private String selectImages = ""; 
    private String imageName; 
    ArrayList<File> imagesArray; 
    WebServiceInterface<String, String> mInterface; 

    public UploadImageToAmazonServer(Context context, String imageName, ArrayList<File> imagesArray) { 

     mContext = context; 
     this.imageName = imageName; 
     this.imagesArray = imagesArray; 
    } 

    public void result(WebServiceInterface<String, String> myInterface) { 
     this.mInterface = myInterface; 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     URL url = null; 

     AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(Constants.Access_Key, Constants.Secret_Access_Key)); 
s3Client.setRegion(Region.getRegion(Regions.AP_SOUTH_1)); 
    // s3Client.setEndpoint("ap-south-1"); 
     for (int i = 0; i < imagesArray.size(); i++) { 
      try { 
       String imagePath = imageName; 
       PutObjectRequest por = new PutObjectRequest("bucketname/foldername", imagePath, imagesArray.get(i)); 
       s3Client.putObject(por); 
       ResponseHeaderOverrides override = new ResponseHeaderOverrides(); 
       override.setContentType("image/jpeg"); 
       //publishProgress(30); 
       GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest("bucketname/foldername", imagePath); 
       urlRequest.setExpiration(new Date(System.currentTimeMillis() + 3600000)); // Added an hour's worth of milliseconds to the current time. 
       urlRequest.setResponseHeaders(override); 
       url=s3Client.generatePresignedUrl(urlRequest); 
       if (i != imagesArray.size() - 1) { 
        selectImages = selectImages + url + "|"; 
       } else { 
        selectImages = selectImages + url; 
       } 

      } catch (com.amazonaws.AmazonClientException amazonExp) { 
       Log.d("setImageSync", amazonExp.getLocalizedMessage()); 
      } 
     } 
     return selectImages; 
    } 


    @Override 
    protected void onPostExecute(String result) { 
     // Utils.hideDialog(); 
     //progressBar.setVisibility(View.GONE); 
     Utility.hideProgressBar(); 
     mInterface.success(this.selectImages); 
    } 


    @Override 
    protected void onPreExecute() { 
     Utility.showProgressDialog(mContext); 
    } 


    @Override 
    protected void onProgressUpdate(Integer... vaIntegers) { 
//  progressBar.setProgress(vaIntegers[0]); 

    } 

    public interface WebServiceInterface<E, R> { 
     public void success(E reslut); 

     public void error(R Error); 
    } 
} 

Si vous avez plus d'images, optez pour le service au lieu de AsycTask