Используя Laravel, я хочу получить единый URL для всех изображений. Изображения хранятся в приватной корзине s3.
Мое текущее действие контроллера:
public function getImage(Request $request) {
$file = Storage::disk('s3')->temporaryUrl($request->filename, now()->addMinutes(5));
return response()->file($file);
}
На мой взгляд, я ссылаюсь на это как:
{{ route('image', ['filename' => $user->meta->profile_image_url]) }}
Я получаю сообщение об ошибке: Symfony \ Component \ HttpFoundation \ File \ Exception \ FileNotFoundException: ...
Проблема в том, что если я просто уронил доступ к URL-адресу непосредственно в представление, он будет работать нормально. Я сделал такие вещи, как:
{{ Storage::disk('s3')->temporaryUrl($filePathFromDB, now()->addMinutes(5)) }}
Опять пытаюсь унифицировать мой доступ к файлам.
-
Я работал над этим еще немного, и у меня появилось обновленное действие контроллера:
public function getImage(Request $request) {
$adapter = Storage::disk('s3')->getDriver()->getAdapter();
$command = $adapter->getClient()->getCommand('GetObject', [
'Bucket' => $adapter->getBucket(),
'Key' => $adapter->getPathPrefix(). '' . $request->filename
]);
$img = $adapter->getClient()->createPresignedRequest($command, '+20 minute');
return response()->file($img->getUri());
}
проблема в том, что это возвращает URL изображения с & и "
Я пробовал htmlspecialchars_decode
Как мне получить чистый URL-адрес?