Php laravel Загрузить файл прямо в корзину AWS S3 - PullRequest
2 голосов
/ 20 июня 2020

Может ли кто-нибудь помочь мне, как загрузить файл в корзину aws S3, используя PHP laravel. Но файл должен быть загружен напрямую в S3, используя предварительно подписанный URL.

1 Ответ

2 голосов
/ 20 июня 2020

Постараюсь ответить на этот вопрос. Итак, есть два способа сделать это:

  1. Вы отправляете предварительно подписанный URL-адрес клиенту Frontend и позволяете им загружать файл напрямую в S3, а после загрузки они уведомляют ваш сервер о то же самое.

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

Поскольку решение 1 говорит само за себя, я попытаюсь объяснить решение 2.

Laravel предоставляет Storage Facade для обработки операций файловой системы. Он следует философии нескольких драйверов - Public, Local Disk, Amazon S3, FTP плюс возможность расширения драйвера.

Шаг 1. Настройте файл .env с помощью ключей AWS, вам потребуются следующие значения, чтобы начать использовать Amazon S3 в качестве драйвера:

  • AWS Key
  • AWS Secret
  • AWS Bucket Name
  • AWS Область сегмента

Шаг 2: Предполагается, что у вас уже есть файл, загруженный на ваш сервер. Теперь мы загрузим файл на S3 с нашего сервера.

Если вы указали s3 в качестве диска по умолчанию, следующий фрагмент выполнит загрузку за вас:

Storage::put('avatars/1', $fileContents);

Если вы вы используете несколько дисков, вы можете загрузить файл:

Storage::disk('s3')->put('avatars/1', $fileContents);

Готово! Теперь ваш файл загружен в корзину S3. Еще раз проверьте его внутри вашего ведра S3.

Если вы используете sh, чтобы узнать больше о Laravel Хранилище, щелкните здесь .

...