php - Laravel AWS S3 图像流视图
问题描述
如何获取 AWS S3 图像作为流视图?
现在我可以看到如下网址的图像:
<img src="https://s3.us-east-1.amazonaws.com/my-bucket/image.png" />
我想要这样:
<img src="https://myproject.com/upload/image.png" />
我尝试如下,但没有奏效。我的路线:
Route::get('/upload/{path_to_image}', 'FileController@getImage')->where('path', '(.*)');
-我的控制器
public function getImage($disk, $path)
{
$headers = array(
'Content-Type: application/image',
);
if(Storage::disk("s3")->exists($path))
{
$file = Storage::disk("s3")->path($path);
return response()->file($file, $headers);
}
abort(404);
}
任何建议将不胜感激!
解决方案
该解决方案基于 AWS。
将 CloudFront (CDN) 与自定义域名一起使用,以使用您自己的 url 代替 S3 URL。
- 创建 CloudFront 分配并将其附加到您的 S3 存储桶。
- 在查看器协议策略中仅允许 HTTPS 请求。
- 对于备用域名 (CNAME),请键入您的自定义域。
- 为您的域提供 SSL 证书。
您可以按照本文了解详细步骤。
一旦分发可用,您就可以使用您的域 url 访问 S3 文件,例如https://s3.us-east-1.amazonaws.com/my-bucket/path/to/image.png
可以以https://myproject.com/image.png
.
如果您想为图像使用一些自定义路径,例如,/upload/image.png
您可以使用行为并指定该路径。
请阅读本文以了解有关 CloudFront 以及它如何优化您的 Web 响应的更多信息。
推荐阅读
- python - 将一组加权和转换为 python 的优雅方式
- android - 权限默认对话框未显示
- javascript - 在滚动上转换 translate3d
- makefile - make/Makefile:用于“禁用”来自目标的依赖项的 CLI 选项
- excel - 将 XML 数据批量导出到 Excel 电子表格
- apache-spark - Spark如何按顺序加载有序parquet分区文件?
- python - 将可执行代码添加到我的 wxpython gui 文本框
- jira - 显示任务中每个子任务的标签字段
- powerbi - 如何使用关键字列表过滤 Power BI 表(在其他表的列中)
- php - Laravel Carbon,如何获取两个日期范围之间的所有日期?