Переопределить значения заголовка ответа с помощью Storage.get с помощью Amplify.JS - PullRequest
0 голосов
/ 02 июля 2019

У меня есть корзина S3 (AWS), где я храню mp3-файлы.И я работаю над приложением, которое было инициализировано через CLI Amplify с использованием amplify init, хранилище S3 было предоставлено с использованием amplify add storage (S3), а приложение (create-реагировать) было опубликовано через репозиторий Amplify, подключенный через AmplifyКонсоль.

Методы Storage.put() и Storage.get(), описанные ниже, являются частью библиотеки aws-amplify (v1.1.29), устанавливаемой через NPM.

При использовании Storage.put()Я могу установить (или не установить) Content-Type и Content-Disposition файлов.

Если я установлю Content-Type на audio/mpeg и Content-Disposition на "вложение", я смогу использовать Storage.get() для получения предварительно подписанного URL-адреса, который предложит окну загрузки ОС сохранить файл..

Если я только установлю Content-Type на audio/mpeg, оставив Content-Disposition по умолчанию ("inline"), Storage.get() вернет предварительно подписанный URL, который начнет потоковую передачу / воспроизведение файлав браузере.

Похоже, что это или / или дорога.

В конечном итоге я пытаюсь разрешить потоковую передачу и / или загрузку в пользовательском интерфейсе, например,с кнопками воспроизведения и загрузки, имеющими соответствующее поведение: image

Хотя я могу установить Content-Type и Content-Disposition на PUT что-то вроде этого:

Для загрузки

await Storage.put(fileName, file, {
  contentType: "audio/mpeg",
  contentDisposition: "attachment",
});

Для потоковой передачи

await Storage.put(fileName, file, {
  contentType: "audio/mpeg"
});

Я не могу понять, как это сделать с помощью метода GET, чтобы переопределитьContent-Disposition.

Я пробовал следующее с файлом uploaперейдите к S3 с использованием Content-Type: «audio / mpeg» и без Content-Disposition, пытаясь переопределить Content-Disposition для разрешения загрузки, используя подписанные URL:

const url = await Storage.get(fileName, {
  contentDisposition: "attachment"
});

и

const url = await Storage.get(fileName, {
  response-content-disposition: "attachment",   
});

Но поведение загрузки против потока всегда будет по умолчанию равным тому, что Content-Disposition установлено в файле на S3, и переопределение не происходит.

Будем благодарны за любые мысли по этому поводу.

Примечание: Я также открыл проблему для этого на репозитории Amplify-JS Github так что, если я получу какие-либо отзывы оттуда, я опубликую результаты здесь.

...