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'
- Convertir InputStream a JSONObject
- TextColor vs TextColorPrimary vs TextColorSecondary
- OpenCV color-valor de un píxel usando mat.get () devuelve a veces null
- No se puede recuperar la clave
- Aplicación de Android dañada usando texureview
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?
- Detectar el lanzamiento del paquete Android
- Mensaje firmado usando OpenSSL; No se puede verificar con Android Java
- Preload de imágenes múltiples con Glide
- Kotlin: no se puede encontrar la clase de símbolo Fragment u otras clases de android
- Error al iniciar la primera aplicación de prueba: Android Packaging Problem?
- Biblioteca Java usando selectores css para analizar XML
- XMLResourceParser, no estoy seguro de cómo leer el XML que tengo
- Gestionar devoluciones de llamada en el cliente android de Socket.io v1.4
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;
- Crear el PutObjectRequestObject Así:
PutObjectRequest por = new PutObjectRequest( BUCKET_NAME, Key, stored); por.setCannedAcl(CannedAccessControlList.PublicReadWrite); s3Client.putObject(por);
- 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.
- Error al usar ScrimInsetFrameLayout
- ¿Android Beacon Library realmente admite la exploración en segundo plano?