La carga de imágenes en s3 no se procesa
Utilizo Expo Image Picker para enviar una imagen recortada a s3. El archivo se está cargando, pero no se representa como una imagen porque no se reconoce como tal. Si tomo los datos del blob y los uso en un codificador de imagen base64, obtengo la imagen, por lo que debe estar basada en mimo o codificación, esto es lo que tengo.
Invoco el Expo Image Picker con;
let pickerResult = await ImagePicker.launchImageLibraryAsync({
allowsEditing: true,
aspect: [1, 1],
base64: true,
exif: false,
});
Los parámetros que utilizo para crear la URL firmada desde el SDK de s3 son;
const params = {
Bucket: 'images,
Key: 'filename.jpg',
Expires: 60 * 5,
ACL: 'public-read',
ContentEncoding: 'base64',
ContentType: 'image/jpeg'
};
La carga se realiza con axios con los siguientes encabezados;
const config = {
headers: {
'x-amz-acl' : 'public-read',
'Content-Encoding': 'base64',
'Content-Type': 'image/jpeg'
}
};
return await axios.put(`${signedURL}`,
base64data,
config)
.then(response => {
console.log('IMAGE UPLOAD SUCCESS');
return response.data;
})
Si cambio el archivo .jpg creado como .txt y lo veo en sublime, los datos son la cadena codificada en base64 en lugar de los datos blob habituales de un jpeg.
¿Qué estoy haciendo mal?
Mostrar la mejor respuesta