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

#android #amazon-s3 #amazon-web-services #amazon-simpledb

#Android #amazon-s3 #amazon-веб-сервисы #amazon-simpledb

Вопрос:

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

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

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

Спасибо!

Шеннон

Ответ №1:

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

Ответ №2:

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

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

и поместите эту зависимость в build.gradle

скомпилируйте ‘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

Ответ №3:

  1. Пожалуйста, загрузите Bucket Explorer и SDExplorer. Bucket Explorer — это инструмент для Amazon s3, а SDB Explorer — это инструмент для Amazon SimpleDB. Их можно скачать бесплатно в течение 30 дней.
  2. Попробуйте загрузить изображение в uisng Bucket Explorer.
  3. Попробуйте сгенерировать веб-URL многократно загруженного изображения одним щелчком мыши.
  4. Скопируйте весь URL-адрес в textpad в локальной файловой системе и сохраните файл в формате 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/