【问题标题】:Laravel and AWS CloudfrontLaravel 和 AWS Cloudfront
【发布时间】:2017-01-16 10:56:29
【问题描述】:

我正在研究并阅读了很多关于一个特定主题的文章,但在任何地方都找不到相关的答案。

但是,我在 Laravel 中做一些有趣的/私人项目,我想使用 Amazon S3 存储。我已经设置好了所有东西,它正在工作,我可以使用 Laravel 文件系统将图像从我的应用程序上传到 S3,但我想要做的是使用 CloudFront(我也有这个设置和工作,云端是正确地提供文件)以提供图像和文件。

现在我的问题是:如何将 AWS CloudFront “url”集成到 Laravel?我的意思是如何在 Laravel 应用程序中存储 CloudFront url?如何检索文件 url(即图像)以便在我的应用程序中显示它。我是否只将文件路径存储在数据库中并使用“某种特定方式”来提供完整的 url,还是将完整的 AWS CloudFront url 保存在数据库中?

这到底是如何工作的?对不起,如果这个问题很愚蠢,但我刚刚潜入 Laravel 并且我在那里很新。

【问题讨论】:

    标签: php mysql laravel amazon-s3 amazon-cloudfront


    【解决方案1】:

    你可以使用这个包https://github.com/publiux/laravelcdn

    Laravel 的内容交付网络包

    该软件包使开发人员能够上传他的资产 (或任何公共文件)到 CDN 使用单个工匠命令。然后 它允许他在本地版本和在线版本之间切换 文件。

    【讨论】:

      【解决方案2】:

      在 config/filesystems/s3 中将 url 设置为您的云端 url

      's3' => [
              'driver' => 's3',
              'key' => env('AWS_KEY'),
              'secret' => env('AWS_SECRET'),
              'region' => env('AWS_REGION'),
              'bucket' => env('AWS_BUCKET'),
              'url' => 'http://xxx.cloudfront.net']
      

      它适用于 L5.5

      【讨论】:

      • 我设置了 'url' 但它仍然返回 S3 的 url,而不是 CloudFront 的 url。我正在使用 L5.5。
      • 使用 L5.6。看来这个解决方案应该根据getAwsUrl() 中的Illuminate\Filesystem\FilesystemAdapter.php 工作,但配置似乎没有采取。缓存系统可能发生了什么?还能是什么?将 dd() 语句添加到 getAwsUrl() 以进行调试甚至不会受到影响。
      • 啊,好吧,你需要使用Storage::url('file.jpg')。这将反映url 设置。谢谢!
      猜你喜欢
      • 2017-07-24
      • 2021-01-29
      • 2015-11-06
      • 2014-04-06
      • 2019-12-11
      • 2018-05-22
      • 2020-11-22
      • 2021-05-13
      • 2021-03-22
      相关资源
      最近更新 更多