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