我有一个无头CMS,它为S3 私有存储桶提供了映像位置。我现在可以使用自定义函数访问这样的图像URL,该函数将每个图像传递到视图,并使用Laravel S3库通过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=''/>
更新
我已经解决了上述问题,方法是在控制器内部对来自Storage get请求的原始数据进行编码,然后将返回字符串和解码指令传递给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=''/>