Превращение изображения в большой двоичный объект в React Native (Expo) и загрузка в корзину S3

У меня есть компонент камеры, который я нажимаю на картинку. Я сохраняю изображение, по которому щелкнули, с помощью файловой системы expo в локальном каталоге cacheDirectory. Выглядит примерно так:

onPictureSaved = async photo => {
    await FileSystem.moveAsync({
        from: photo.uri,
        to: `${FileSystem.cacheDirectory}test.jpg`
    });}

Мой следующий шаг к моей следующей остановке — преобразование изображения в локальном cacheDirectory в большой двоичный объект и загрузка изображения в S3 через aws-sdk:

var params = {
            Bucket: "my-bucket", 
            Key: 'test.jpg',
            Body: blob
           };

           s3.upload(params, function(err, data) {
            if (err) {
                console.info(err);
            } // an error occurred
            else  { 
                console.info(data);
            }         // successful response

          }

Однако любые методы или модули, которые я устанавливал для выполнения этого крошечного шага в процессе, вообще не работали. Я не могу использовать RNFS, react-native-fetch-blob или любые другие модули, требующие привязки, благодаря экспо-клиенту. Я не хочу отделять выставку только из-за одной вещи. Есть ли другой способ сделать это?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
1 814
1

Ответы 1

Взгляните на https://github.com/expo/image-upload-example/issues/3#issuecomment-387263080. Последний выпуск выставки поддерживает большие двоичные объекты, поэтому вы можете сделать что-то вроде следующего:

uploadToS3 = async (fileUri, s3Bucket, s3Key) => {
const response = await fetch(fileUri);
const blob = await response.blob();
return new Promise((resolve, reject) => {
  const params = {
    Bucket: s3Bucket,
    Key: s3Key,
    Body: blob,
  };
  s3.upload(params, function(err, data) {
    if (err) {
      console.info('Something went wrong');
      console.info(err);
      reject(err);
    } else {
      console.info('Successfully uploaded image');
      resolve(data);
    }
  });
});

};

Надеюсь это поможет!

Другие вопросы по теме