Skip to content Skip to sidebar Skip to footer

Uploading Image To S3 Bucket

How to upload an image to Amazon s3 bucket in android?.I am having secret key and access key for uploading but still not able to do.Here is my code protected String doInBac

Solution 1:

Here is sample code Put your won keys & bucket_name in code:

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;

import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.PutObjectResult;
import com.amazonaws.services.s3.model.ResponseHeaderOverrides;
import com.worldofmoms.networklib.R;
import com.worldofmoms.networklib.listeners.IRequestListener;
import com.worldofmoms.networklib.utils.helpers.LocalLog;
import java.io.File;

public class UploadImageTask  extends AsyncTask<String, Void, String> {
    private ProgressDialog dialog;
    private IRequestListener<Object> mListener;
    private String mRequestTag;
    Context mContext;

    public UploadImageTask(Context context,String requestTag, IRequestListener<Object> listener)
    {
        mContext=context;
        mRequestTag=requestTag;
        this.mListener=listener;
    }
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        dialog = ProgressDialog.show(mContext, null, "", true);
        dialog.setContentView(R.layout.loaders_progress_dialog);
        dialog.setCancelable(false);
    }

    @SuppressWarnings("unused")
    @Override
    protected String doInBackground(String... params) {
        String path = params[0];
        return sendImageToAmazonS3Server(path);
    }

    @Override
    protected void onProgressUpdate(Void... unsued) {}

    @Override
    protected void onPostExecute(String sResponse) {
        if (dialog!=null && dialog.isShowing()) {
            dialog.dismiss();
        }
        this.mListener.onRequestSuccess(mRequestTag, sResponse);
    }

    private String sendImageToAmazonS3Server(String Filepath){
        //String MY_ACCESS_KEY_ID 
        String MY_ACCESS_KEY_ID = "Put Access key";

        //String MY_SECRET_KEY 
        String MY_SECRET_KEY = "Put SECRET_KEY ";


        //String MY_PICTURE_BUCKET 
        String MY_PICTURE_BUCKET = "bucketName";
        //String MY_PICTURE_BUCKET = "wom-profilepics-test";

        String rootUpload = Filepath;
        File file = new File(rootUpload);
        if (file.exists()) {
            String fileExtension="jpg";

            String imageNAME = String.valueOf(System.currentTimeMillis());
            String fileNameToUpload = imageNAME+"."+fileExtension;
            fileNameToUpload=fileNameToUpload.trim();
            try {
            AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(MY_ACCESS_KEY_ID, MY_SECRET_KEY));
            // create bucket
            //s3Client.createBucket(MY_PICTURE_BUCKET);
            InputStream input = new URL("https://hi.co/bundles/hitomain/images/hi_big.png?v=1448090952").openStream();
            ObjectMetadata objectMetadata = new ObjectMetadata();
            PutObjectRequest por = new PutObjectRequest(MY_PICTURE_BUCKET,fileNameToUpload,input,objectMetadata);
            por.setCannedAcl(CannedAccessControlList.PublicRead);
            PutObjectResult result = s3Client.putObject(por);

                 LocalLog.d("PATH", "" + fileNameToUpload);

                /*LocalLog.d("putting Object result ",""+ result.getETag()
                        //result.
                        + " MD5 " + result.getContentMd5());*/

                ResponseHeaderOverrides override = new ResponseHeaderOverrides();
                override.setContentType("image/jpeg");

                /*GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest( MY_PICTURE_BUCKET,imageNAME );
                urlRequest.setExpiration( new Date(System.currentTimeMillis() + 3600000));  // Added an hour's worth of milliseconds to the current time.
                urlRequest.setResponseHeaders(override);
                URL url = s3Client.generatePresignedUrl( urlRequest );*/
                //LocalLog.d(" S3 SERVER IMAGE PATH = ",""+url.toString());
                String filePathOnServer = "http://"+MY_PICTURE_BUCKET+".s3.amazonaws.com/"+fileNameToUpload;
                LocalLog.d(" S3 SERVER IMAGE PATH = ",""+filePathOnServer);
                return filePathOnServer;
            } catch (Exception e) {
                LocalLog.printStackTrace(e);
                return "";
            }
        } else {
            return "";
        }
    }
}

Post a Comment for "Uploading Image To S3 Bucket"