У меня есть безголовая CMS, которая обслуживает местоположение образа для S3 частного сегмента. Я могу получить доступ к URL-адресу изображения, как сейчас, используя пользовательскую функцию, которая берет каждое изображение, переданное в представление, и захватывает его через S3 с помощью библиотеки Laravel S3.
return Storage::cloud()->url($newLink[1]); // This currently works
Однако сейчас я хочу скрыть полный URL-адрес возвращаемого изображения из шаблона представления. Из моего понимания я должен использовать функцию get. Затем переписать новый URL.
return Storage::cloud()->get($newLink[1]);
Однако, на мой взгляд, теперь изображение html отображается как неизвестное. После некоторых исследований я обнаружил, что модуль Laravel для файлового хранилища не обрабатывает необработанные данные для изображений. Кроме того, у меня есть некоторая сложность, поскольку я не хочу, чтобы мои объекты корзины были публичными.
<img src=(unknown) alt=''/>
update
Я исправил вышеуказанную проблему, кодировав необработанные данные из запроса на получение Storage внутри моего контроллера и расшифровав его, передав строку возвратаи инструкции по декодированию в тег img.
$base64 = base64_encode(Storage::cloud()->get($newLink[1]));
return "data:image/png;base64,".$base64;
После некоторых исследований я обнаружил, что модуль Laravel для хранилища файлов по умолчанию не обрабатывает необработанные данные для изображений. То, чего я хочу достичь, это изображение с SEO-дружественной URL-ссылкой. Я думаю, что мне нужно использовать что-то вроде https://aws.amazon.com/blogs/security/how-to-use-bucket-policies-and-apply-defense-in-depth-to-help-secure-your-amazon-s3-data/. Любая помощь или точка в правильном направлении очень ценится.
//expected final outcome
<img src='/image/my-image.jpg' alt=''/>