Laravel AWS S3 图像流视图
Laravel AWS S3 Image Streaming view
如何获取 AWS S3 图像作为流视图?
现在我可以看到如下图 url:
<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 证书。
您可以按照this article了解详细步骤。
分发可用后,您可以使用您的域 url 访问 S3 文件,例如https://s3.us-east-1.amazonaws.com/my-bucket/path/to/image.png
可以作为 https://myproject.com/image.png
.
访问
如果您想为图像使用一些自定义路径,例如/upload/image.png
您可以使用 Behaviour 并指定该路径。
请阅读 this article 以了解有关 CloudFront 的更多信息以及它如何优化您的 Web 响应。
如何获取 AWS S3 图像作为流视图?
现在我可以看到如下图 url:
<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 证书。
您可以按照this article了解详细步骤。
分发可用后,您可以使用您的域 url 访问 S3 文件,例如https://s3.us-east-1.amazonaws.com/my-bucket/path/to/image.png
可以作为 https://myproject.com/image.png
.
如果您想为图像使用一些自定义路径,例如/upload/image.png
您可以使用 Behaviour 并指定该路径。
请阅读 this article 以了解有关 CloudFront 的更多信息以及它如何优化您的 Web 响应。