Subida de imagen amazon s3 android SDK 2.0

Quiero subir una imagen a un cubo amazon s3 en android. No tengo ningún error, pero simplemente no funciona ¿alguien puede ayudarme? No puedo encontrar buenos ejemplos o preguntas sobre esto.

Asigno una imagen a '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(); } 

He creado mi cubo, en los permisos que establezco que todo el mundo puede escribir y leer.

En amazito cognito acabo de dejar todo por defecto.

¿Alguien sabe cómo puedo conseguir que esto funcione?

Prueba éste. Desde que tuve el mismo problema que enfrentó.

He fijado usando el código abajo.

 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(); 

Manera muy simple de descargar la imagen y de cargar la imagen en s3 amazon. Usted hace una clase simple utilizar este 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); } } 

Llame a este servicio web en cualquier parte del proyecto

  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; } 

Usted debe tener que hacer dos pasos;

  1. Crear el PutObjectRequestObject Así:
 PutObjectRequest por = new PutObjectRequest( BUCKET_NAME, Key, stored); por.setCannedAcl(CannedAccessControlList.PublicReadWrite); s3Client.putObject(por); 
  1. Cambiar la política de la consola del servidor Amazon s3 cambiando el cubo (carpeta) público.

Ya lo había hecho y está funcionando.

  • Conecte con los clientes de iOS y Android a SockJS Backend
  • Utilizando Paint.setStrokeJoin () y Paint.setStrokeMiter ()
  • Cómo generar clases java desde el archivo WSDL
  • Obtener boolean de la base de datos utilizando Android y SQLite
  • Rellenar los datos en un mapa de bits de Android tan pronto como sea posible desde C
  • La URL del contexto no puede estar vacía - Plugin de Gradle de Artifactory con Plugin de Android
  • Android: Cómo utilizar AlarmManager
  • Custom SimpleAdapter sólo muestra texto de ejemplo Android
  • Import slidingmenu library en Eclipse Indigo Service Release 2
  • Animar transiciones de elementos compartidos usando fragmentos de Android parece ser una pesadilla
  • SQLite de Android Cursor fuera de límites de excepción en SELECT count (*) FROM table
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.