используйте класс ниже для загрузки изображений на сервер 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