Пример React Native + Amplify S3 - PullRequest
       21

Пример React Native + Amplify S3

0 голосов
/ 29 сентября 2018

Я ищу подробный пример того, как вернуть имя файла после успешной отправки его на S3.

В настоящее время у меня есть что-то вроде:

uploadImageAsync = async (pickerResult) => {
    try {
      this.setState({
        uploading: true,
      })

      if (!pickerResult.cancelled) {
        const response = await fetch(pickerResult.uri);
        const blob = await response.blob();
        Storage.put(fileName, blob)
          .then(result => console.log(result))
          .catch(err => console.log(err))
      }
    } finally {
      this.setState({
        uploading: false,
      })
    }
  }

Мой возвратРезультатом является имя файла, который я создал.Я хотел бы вернуть имя файла S3 после его создания.Это возможно?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Вы можете выполнить get() вызов изображения, чтобы получить подписанный URL.

Storage.put('profile-picture.jpeg', blob)
  .then(result => {
    Storage.get('profile-picture.jpeg')
      .then(result => {
        console.log(result);                    
      })
      .catch(err => {
        console.error(err);
      });
  })
  .catch(err => {
    console.error(err);
  });
0 голосов
/ 01 октября 2018

Таким образом, вам на самом деле не нужно возвращать ключ файла S3, возвращенный вам после выполнения пута, потому что он всегда будет иметь предсказуемый ключ, основанный на третьем параметре, который вы указываете «положить».

  • Открытый уровень / пропущен третий параметр: «public / yourFileName»
  • Защищенный уровень / {level: 'protected'}: «protected / IdentityId / fileName»
  • Частный уровень / {level: 'private'}: "private / IdentityId / fileName"

Функция put автоматически создает префикс для вашего имени файла.Тем не менее, вы можете получить часть «IdentityId» следующим образом, если она вам нужна по любой причине:

Auth.currentCredentials().then(user => user.identityId)
...