Загрузка файлов напрямую с клиента на S3, не затрагивая файлы вашего Laravel-приложения.
Здесь обсуждается традиционный подход к обработке загрузки файлов в веб-приложениях, особенно в PHP и Laravel, где файлы обрабатываются сервером перед сохранением в службе хранения, такой как Amazon S3.
🔄 Предлагается альтернативный метод: файлы не касаются веб-сервера, а загружаются с клиента в S3.
Альтернативный подход включает следующие шаги:
1. Пользователь выбирает файл для загрузки.
2. JavaScript-клиент отправляет метаданные файла на бэкэнд.
3. Бэкэнд проверяет размер файла и тип контента, генерирует подписанный URL для ожидающего файла и отправляет его клиенту.
4. Клиент загружает файл напрямую в S3, используя подписанный URL.
5. После загрузки клиент уведомляет бэкэнд, что файл успешно загружен.
6. Бэкэнд создает необходимые записи в базе данных, связанные с загруженным файлом.
💻 Предоставлены кодовые фрагменты, включая объект значения SignedUrl и класс для генерации URL в S3. Также демонстрируется, как интегрировать эту логику в контроллер Laravel для обработки загрузки файлов.
💾Бэкэнд дополнительно рассматривается с точки зрения проверки метаданных файла, создания соответствующих моделей Eloquent и перемещения файлов из временных в постоянные каталоги в S3.
Post #4036
3.31K