Проблемы с загрузкой mp3 файлов из S3 с помощью Amplify / Node - PullRequest
0 голосов
/ 07 января 2020

Я не совсем понимаю, как использовать библиотеку Amplify для фактической загрузки mp3-файла, хранящегося в моем хранилище s3. Я могу перечислить содержимое корзины и проанализировать все это в средстве просмотра деревьев, чтобы пользователи могли просматривать различные файлы, но как только я выбрал файл, у меня не получилось запустить его.

I ' Я уверен, что моя конфигурация амплификации правильная, так как я вижу все свои ожидаемые каталоги, и когда я выбираю файл, который хочу загрузить, я вижу правильный размер ответа: chome network tab

Вы видно, что это занимает более 2 секунд и, похоже, загружает файл данных / mp3, но пользователю никогда не предлагается сохранить файл, и его нет в папке «Загрузки».

Вот захват моей настройки метаданных файла из моего ведра: file metadata

И метод, который я вызываю:

  getFile (fileKey) {
      Storage.get(fileKey, {download: true})
  }

Без конфигурации «download: true» я получаю проверенный URL обратно в ответ. Я хотел бы не делать второй запрос с использованием этого URL, если возможно, скачайте файл. Что-нибудь еще, что я, возможно, пропустил? Для операций s3 лучше go вернуться к стандартному aws -sdk? Заранее спасибо!

1 Ответ

0 голосов
/ 08 января 2020

Я использовал комбинацию этого ответа: { ссылка }

и этот фрагмент: https://gist.github.com/javilobo8/097c30a233786be52070986d8cdb1743

Итак, файл загружается в данные ответа (результат), я добавил дополнительные метаданные теги к файлам, чтобы получить имя файла и заголовок. Наконец, добавив ссылку на DOM и выполнив щелчок (), вы сохраните файл с правильным именем. Полное решение ниже:

getFile (fileKey) {
      Storage.get(fileKey, {download: true}).then(result => {
        console.log(result)
        let mimeType = result.ContentType

        let fileName = result.Metadata.filename
        if (mimeType !== 'audio/mp3') {
          throw new TypeError("Unexpected MIME Type")
        }

        try {
          let blob = new Blob([result.Body], {type: mimeType})

          //downloading the file depends on the browser
          //IE handles it differently than chrome/webkit
          if (window.navigator && window.navigator.msSaveOrOpenBlob) {
            window.navigator.msSaveOrOpenBlob(blob, fileName)
          } else {
            let objectUrl = URL.createObjectURL(blob);
            let link = document.createElement('a')
            link.href = objectUrl
            link.setAttribute('download', fileName)
            document.body.appendChild(link)
            link.click()
            document.body.removeChild(link)
          }
        } catch (exc) {
          console.log("Save Blob method failed with the following exception.");
          console.log(exc);
        }

      })
  }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...