Download image amazon s3 android SDK 2.0

I want to upload an image to amazon s3 trash in Android. I have no errors, but it just doesn’t work, can someone help me? I cannot find any good examples or questions about this.

I assign the image "File images3"

images3 = new File(uri.getPath()); public void addEventToDB(){ Thread thread = new Thread() { @Override public void run() { try { CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider( getActivity().getApplicationContext(), // get the context for the current activity "...", "us-east-1:...", "arn:aws:iam::...:role/Cognito_WitpaAuth_DefaultRole", "arn:aws:iam::...:role/Cognito_WitpaAuth_DefaultRole", Regions.US_EAST_1 ); String bucket_name = "witpa"; String key = "images.jpeg"; TransferManager transferManager = new TransferManager(credentialsProvider); transferManager.upload(bucket_name, key, images3); } catch (Exception e) { e.printStackTrace(); } } }; thread.start(); } 

I created my bucket, in the permissions that I set, so that everyone can write and read.

In amazon cognito, I just left everything by default.

Does anyone know how I can make this work?

+5
source share
3 answers

Try it. Since I had the same problem you encountered.

I fixed using the code below.

 ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentEncoding("UTF-8"); size = inputStream.available(); metadata.setContentLength(size); TransferManager transferManager = new TransferManager(credentialsProvider); Upload upload = transferManager.upload(bucket_name, key, images3, metadata); upload.waitForCompletion(); 
+3
source

A very easy way to upload images and upload images to amazon s3. you make a simple class using this WebserviceAmazon

 public class WebserviceAmazon extends AsyncTask<Void, Void, Void> { private String mParams; private String mResult = "x"; WebServiceInterface<String, String> mInterface; private int mRequestType; private String UserId; private Context mContext; public WebserviceAmazon(Context context,String imagePath,String AppId,int type) { this.mContext = context; this.mParams = imagePath; this.mRequestType = type; this.UserId = AppId; } public void result(WebServiceInterface<String, String> myInterface) { this.mInterface = myInterface; } @Override protected Void doInBackground(Void... params) { String ACCESS_KEY ="abc.."; String SECRET_KEY = "klm..."; try { if (mRequestType == 1) { // POST AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY)); PutObjectRequest request = new PutObjectRequest("bucketName", "imageName", new File(mParams)); s3Client.putObject(request); mResult = "success"; } if (mRequestType == 2) { // For get image data AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY)); S3Object object = s3Client.getObject(new GetObjectRequest("bucketName", mParams)); S3ObjectInputStream objectContent = object.getObjectContent(); byte[] byteArray = IOUtils.toByteArray(objectContent); Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); mResult = "success"; } } catch (Exception e) { mResult = e.toString(); e.printStackTrace(); } return null; } @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); } @Override protected void onPostExecute(Void result) { // TODO Auto-generated method stub super.onPostExecute(result); mInterface.success(this.mResult); } public interface WebServiceInterface<E, R> { public void success(E reslut); public void error(R Error); } } 

call this web service any where in the project

  WebserviceAmazon amazon = new WebserviceAmazon(getActivity(), imageName, "", 2); amazon.result(new WebserviceAmazon.WebServiceInterface<String, String>() { @Override public void success(String reslut) { } @Override public void error(String Error) { } }); return totalPoints; } 
+1
source

You need to take two steps;

  • Create a PutObjectRequestObject like this:
 PutObjectRequest por = new PutObjectRequest( BUCKET_NAME, Key, stored); por.setCannedAcl(CannedAccessControlList.PublicReadWrite); s3Client.putObject(por); 
  1. Change the Amazon s3 server console policy by changing the shared directory (folder).

I have already done this and am working.

0
source

Source: https://habr.com/ru/post/1207550/


All Articles