Загрузка файла AWS S3 со стороны клиента - PullRequest
0 голосов
/ 28 сентября 2018

В настоящее время я пытаюсь загрузить файл из корзины s3 с помощью кнопки из внешнего интерфейса.Как это возможно сделать?Я понятия не имею, с чего начать.Я пытался исследовать и исследовать, но не повезло - все, что я искал, это примерно ЗАГРУЗКА файлов в корзину s3, но не ЗАГРУЗКА файлов.Заранее спасибо.

ПРИМЕЧАНИЕ. Я применяю его к ReactJS (внешний интерфейс) и NodeJS (внутренний интерфейс) , а также к файлу загружается с помощью Webmerge

ОБНОВЛЕНИЕ: я пытаюсь сгенерировать ссылку для скачивания с этим (пробный узел, даже если я не бэкенд-разработчик) (смеется)

см. Изображения ниже

что я пробовал до сих пор

Функция onClick

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вот мое решение:

let downloadImage = url => {
  let urlArray = url.split("/")
  let bucket = urlArray[3]
  let key = `${urlArray[4]}/${urlArray[5]}`
  let s3 = new AWS.S3({ params: { Bucket: bucket }})
  let params = {Bucket: bucket, Key: key}
  s3.getObject(params, (err, data) => {
    let blob=new Blob([data.Body], {type: data.ContentType});
    let link=document.createElement('a');
    link.href=window.URL.createObjectURL(blob);
    link.download=url;
    link.click();
  })
}

URL-адрес в аргументе относится к URL-адресу файла S3.

Просто поместите это в метод onClick вашей кнопки.Вам также понадобится AWS SDK

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

Если файл, который вы пытаетесь загрузить, не является общедоступным, то вам нужно создать подписанный URL, чтобы получить этот файл.

Решение здесь Javascript для загрузки файла из корзины Amazon 3? для получения непубличных файлов, которые вращаются вокруг создания лямбда-функции, которая будет генерировать для вас подписанный URL-адрес, а затем использовать этот URL-адрес для загрузки файла при нажатии кнопки

НО, если файл, который вы пытаетесь загрузитьвы общедоступны, тогда вам не нужен подписанный URL, вам просто нужно знать путь к файлу, URL структурированы следующим образом: https://s3.amazonaws.com/ [путь к файлу] / [имя файла]

Они также расширяют возможности, созданные и поддерживаемые командой AWS.

Просто следуйте Начало работы и загрузка файла из вашего приложения реагирования выглядит так:

Storage.get('hello.png', {expires: 60})
.then(result => console.log(result))
.catch(err => console.log(err));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...