У кого-нибудь есть рабочий пример использования Amazon S3 и SimpleDB с Android? - PullRequest
2 голосов
/ 08 ноября 2011

Меня интересует загрузка данных (в основном изображений) из моего приложения для Android в Amazon S3, а затем сохранение их ссылки в Amazon SimpleDB (с другими данными).

Есть ли у кого-нибудь рабочий пример, который берет изображение и некоторые данные (текст и т. Д.) Из приложения, загружает изображение на S3 и сохраняет ссылку на изображение и данные в SimpleDB для последующего извлечения?

Я просматривал Amazon SDK для Android, просматривал их примеры и читал то, что я могу найти по этому вопросу, но я не могу найти хороший пример, который я могу понять и реализовать.

Спасибо!

Shannon

Ответы [ 3 ]

0 голосов
/ 15 ноября 2011

Вы можете попробовать эту статью, которая показывает, как загрузить изображения в S3 с помощью Amazon Android SDK: http://aws.amazon.com/articles/SDKs/Android/3002109349624271

0 голосов
/ 21 сентября 2016

используйте класс ниже для загрузки изображений на сервер amazon s3 и получения строки URL загруженного изображения. убедитесь, что вы даете правильное название региона. чтобы определить ваш регион под номером URL

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

и поместите эту зависимость в 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);
    }
}

Если у вас есть больше изображений, тогда перейдите на обслуживание вместо AsycTask

0 голосов
/ 11 ноября 2011
  1. Пожалуйста, загрузите Bucket Explorer и SDExplorer .Bucket Explorer - это инструмент для Amazon s3, а SDB Explorer - это инструмент для Amazon SimpleDB.Их можно скачать бесплатно в течение 30 дней.
  2. Попробуйте загрузить изображение uisng Bucket Explorer .
  3. Попробуйте Создать веб-URL из нескольких загруженных изображений одним щелчком мыши.
  4. Скопируйте все URL-адреса на текстовую панель в локальной файловой системе и сохраните файл как csv.
  5. Запустите SDB Explorer и Импортируйте данные из CSV .

Для получения дополнительной информации -

  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/
...