Мне известны две опции:
- Возвращение временного подписанного URL-адреса, который пользователь может использовать для загрузки файла непосредственно из S3.
- Потоковая передача или загрузка файла из S3 через ваше приложение.
Для первого варианта вы можете использовать Storage
фасад temporaryUrl
метод , подобный этому, чтобы разрешить доступ для 5минут:
$url = Storage::disk('s3')->temporaryUrl(
'file.jpg', now()->addMinutes(5)
);
Чтобы загрузить файл через свой сервер, вы можете вернуть:
return Storage::download('file.jpg');
Не указывайте мне следующее, но я думаю, что преимущество использования S3 временное.url в том, что загрузка не должна происходить через ваш сервер, который освобождает ваш сервер для других запросов.Преимущество загрузки через ваш сервер состоит в том, что вы сможете проходить проверку подлинности на каждом запросе, и у вас не будет временного URL, которым пользователь сможет поделиться.