Мы используем пакет Nova для нашего административного бэкэнда внутри нашего Laravel приложения. Все файлы и изображения хранятся в корзине AWS S3.
После попытки загрузить файл из Nova загрузка начинается с загрузки имени. json и сообщения об ошибке сервера.
Файлы правильно хранятся в S3, я могу проверить это вручную, также путь к ним внутри S3 правильно хранится в базе данных.
Вот код, который мы используем для создания поля загрузки в Nova
->download(function(){
return Storage::disk('s3')->download($this->name);
})
->onlyOnDetail()
$ this-> name содержит путь внутри корзины s3.
config / filesystems . php также определено:
'disks' => [
...
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],
Документация Nova не помогла мне в этой проблеме. Любой вклад будет очень полезным.
ОБНОВЛЕНИЕ: Проблема была не в коде, а в конфигурации. Без изменения конфигурации следующий код помог:
Text::make('File/Document', function() {
$linkToFile = Storage::disk('s3')->temporaryUrl($this->name, now()->addMinutes(1));
return '<a href="' . $linkToFile . '" target="_blank">Download file</a>';
})
->asHtml(),