Мне нужно загрузить изображение напрямую в корзину S3. Я использую реагировать родной, и реагировать родной-сборщик изображений, чтобы выбрать фотографию. Это возвращает локальное изображение URI. Вот мой код прямо сейчас.
ImagePicker.showImagePicker(options, response => {
var bodyFormData = new FormData(); // If I don't use FormData I end up
// uploading the json not an image
bodyFormData.append('image', {
uri: response.uri, // uri rather than data to avoid loading into memory
type: 'image/jpeg'
});
const uploadImageRequest = {
method: 'PUT',
url: presignedS3Url,
body: bodyFormData,
headers: {
'Content-Type: 'multipart/form-data'
}
};
axios(uploadImageRequest);
});
Это почти работает .. когда я проверяю свое ведро S3, у меня есть файл, который почти изображение. Он имеет следующий формат
--Y_kogEdJ16jhDUS9qhn.KjyYACKZGEw0gO-8vPw3BcdOMIrqVtmXsdJOLPl6nKFDJmLpvj^M
content-disposition: form-data; name="image"^M
content-type: image/jpeg^M
^M
<Image data>
Если я вручную захожу и удаляю заголовок, то у меня есть мое изображение! Тем не менее, мне нужно загрузить изображение непосредственно на S3, который клиенты будут получать и ожидают, что уже будут в правильном формате изображения.
Я могу сделать это, используя response.data и декодирование в строку изагружая это напрямую, но ради памяти я бы предпочел не делать этого.