【问题标题】:Laravel AWS S3 Image Streaming view [closed]Laravel AWS S3 图像流视图 [关闭]
【发布时间】:2020-10-07 05:13:17
【问题描述】:

如何获取 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);
    }

任何建议将不胜感激!

【问题讨论】:

  • 我不明白,你想用自己的 url 代替 S3 url,还是有其他问题? (我是 AWS 开发人员,对 laravel 有点了解)。
  • 是的,我想要我自己的 url 而不是 AWS url。
  • “它不起作用”非常广泛。这究竟是什么意思?

标签: php laravel amazon-s3 laravel-storage laravel-filesystem


【解决方案1】:

此解决方案基于 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 响应的更多信息。

【讨论】:

    猜你喜欢
    • 2020-10-18
    • 2018-02-23
    • 2018-07-03
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多