Как загрузить видео на S3 с помощью Amplify или RNFetchBlob?

Я использую react-native-image-picker, чтобы получить путь к файлу видео на моем телефоне-симуляторе iOS для моего собственного приложения React. Как использовать это для загрузки на S3 с помощью Amplify?

import ImagePicker from 'react-native-image-picker';
import RNFetchBlob from 'react-native-fetch-blob';

class App extends Component {

 constructor(props) {
    super(props)

   this.state = {
     vidFileName: '',
     fileURI: '',
   }

    this.putFileInS3 = this.putFileInS3.bind(this);  
 }

  pickVideo = async () => {

    const options = {
       mediaType: 'video'
      };
      ImagePicker.launchImageLibrary(options, (response) => {
          console.log('Response = ', response);

         this.setState({ 
            vidFileName: response.fileName,
            fileURI: response.uri,
          });

         this.putFileInS3();
     }
  }

 readFile = (somefilePath) => {
     return RNFetchBlob.fs.readFile(somefilePath, 'base64').then(data => new 
      Buffer(data, 'base64'));
    } 


putFileInS3 = async () => 
  {
     RNFetchBlob.fs.readFile(this.fileURI).then(buffer => {
       Storage.put(vidFileName, buffer, { contentType: 'video/mp4' })
       conole.log('successfully uploaded video to bucket');
     }).catch(e => {
       console.log(e);
     });

  }

Я пытаюсь следовать этому: https://aws-amplify.github.io/docs/js/storage в разделе "Загрузить изображение в приложении React Native". Но может я что-то упустил? Не могли бы вы помочь?

Error: file:///Users/xxxxxxxxxx/Library/Developer/CoreSimulator/Devices/xxxxxxxxx/data/Containers/Data/Application/5CxxxxxxxxxxxxxC79/tmp/4xxxxxxxxxxxxxx.MOV . <-URI
App.js:130 Error: file not exists
    at createErrorFromErrorData (NativeModules.js:146)
    at NativeModules.js:95
    at MessageQueue.__invokeCallback (MessageQueue.js:397)
    at MessageQueue.js:127
    at MessageQueue.__guard (MessageQueue.js:297)
    at MessageQueue.invokeCallbackAndReturnFlushedQueue (MessageQueue.js:126)
    at debuggerWorker.js:72

person chai86    schedule 31.01.2019    source источник


Ответы (1)


Этот пакет отлично работает для отправки данных в вашу корзину в S3, react-native-aws3 .

Если вам нужна помощь в использовании пакета, оставьте комментарий.

person Ron Astle Lobo    schedule 01.02.2019
comment
Я успешно использовал это раньше, но в интересах безопасности я бы предпочел придерживаться метода AWS Amplify, так как пользователь будет входить в систему через withAuthenticator. - person chai86; 01.02.2019
comment
@ chai86 Вы нашли решение этой проблемы? - person Fook; 10.09.2019