Как я могу получить полный URL-адрес файла, загруженного на s3 с помощью Laravel? - PullRequest
0 голосов
/ 02 октября 2018

У меня есть это для загрузки изображений на один bucket на s3 в AWS

$image = $picture;
$ext = explode(";", explode("/",explode(",", $image)[0])[1])[0];
$image = str_replace('data:image/'.$ext.';base64,', '', $image);
$image = str_replace(' ', '+', $image);
$imageName = str_random(10) . '.' . $ext;
$fullImagePath = 'datasheets/' . $imageName;
Storage::disk('s3')->put($fullImagePath, base64_decode($image));

$DataSheetPicture = new DataSheetPicture();
$DataSheetPicture->data_sheet_id = $DataSheet->id;
$DataSheetPicture->picture = Storage::disk('s3')->url($fullImagePath);
$DataSheetPicture->save();

Приведенный выше код работает нормально, он успешно загружает изображения в bucket, но наэта строка

$DataSheetPicture->picture = Storage::disk('s3')->url($fullImagePath);

Сохраняет URL-адрес в базе данных, как эти

/ datasheets / 6GcfzgUPrA.jpeg/datasheets/AuqHmu8p0W.jpeg

Но мне нужно получить URL-адрес, подобный этому

https://s3.REGION.amazonaws.com/BUCKET-NAME/FULL-IMAGE-PATH

Я не хочуобъединить регион или имя сегмента, поскольку оно может быть динамическим

1 Ответ

0 голосов
/ 02 октября 2018

Следующий адрес даст вам правильный URL:

return Storage::disk('s3')->url($filename);

Поскольку Laravel 5.2 вы также можете использовать cloud()

return Storage::cloud()->url($filename);

Я нене нужно объединять регион или имя сегмента, потому что оно может быть динамическим

Тогда вы должны изменить конфигурацию и не делать это вручную для правильной работы, например:

config([
    'filesystem.disks.s3.bucket'   => 'my_bucket'
    'filesystem.disks.s3.region    => 'my_region'
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...