Carrierwave 雾 Amazon S3 图像不显示

2024-01-07

我已经安装了CarrierWave和Fog,已经成功上传图像并第一次查看它们,但现在它不再显示图像了。

这是我的配置文件应用程序/配置/初始化器/ Carrierwave.rb

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',                                       # required
    :aws_access_key_id      => 'AKIAJKOHTE4WTXCCXAMA',                      # required
    :aws_secret_access_key  => 'some secret key here',                      # required
    :region                 => 'eu-east-1',                                 # optional, defaults to 'us-east-1'
    :host                   => 'https://s3.amazonaws.com',                  # optional, defaults to nil
    :endpoint               => 'https://s3.amazonaws.com:8080'              # optional, defaults to nil
  }
  config.fog_directory  = 'createmysite.co.za'                    # required
  config.fog_public     = false                                   # optional, defaults to true
  #config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end

这就是应该显示的图像的 url 的样子

<img alt="Normal_selection_003" src="https://createmysite.co.za.s3.amazonaws.com/uploads/portfolio/image/3/normal_Selection_003.png?AWSAccessKeyId=AKIAJKOHTE4WTXCCXAMA&amp;Signature=8PLq8WCkfrkthmfVGfXX9K6s5fc%3D&amp;Expires=1354859553">

当我打开图像网址时,这是亚马逊的输出

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>3F179B7CE417BC12</RequestId>
<HostId>
zgh46a+G7UDdpIHEEIT0C/rmijShOKAzhPSbLpEeVgUre1iDc9f7TSOwaJdQpR65
</HostId>
</Error>

Update

新的配置文件(添加了雾 URL 过期)应用程序/配置/初始化器/ Carrierwave.rb

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',                                       # required
    :aws_access_key_id      => 'AKIAJKOHTE4WTXCCXAMA',                      # required
    :aws_secret_access_key  => 'chuck norris',  # required
  }
  config.fog_directory  = 'createmysite.co.za'                              # required
  config.fog_public     = false                                             # optional, defaults to true
  config.fog_authenticated_url_expiration = 600                             # (in seconds) => 10 minutes
end

奇迹般有效!


你已经设置了config.fog_public to false并使用 Amazon S3 进行存储。通过 S3 的私有文件的 URL 是临时的(它们已签名且有有效期)。具体来说,您问题中发布的网址有一个Expires=1354859553范围。

1354859553 is Fri, 07 Dec 2012 05:52:33 GMT,这是从当前时间过去的时间,因此该链接实际上已过期,这就是为什么您会收到Access Denied error.

您可以进一步调整到期时间(默认值为600秒)通过设置

config.fog_authenticated_url_expiration = ... # some integer here

如果您想要不过期链接

  • set config.fog_public to true
  • 让您的应用程序充当中间人,通过以下方式提供文件send_file. Here https://stackoverflow.com/questions/8089933/showing-images-with-carrierwave-in-rails-3-1-in-a-private-store-folder至少有一个关于 SO 的问题涵盖了这一点
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Carrierwave 雾 Amazon S3 图像不显示 的相关文章

随机推荐

  • Pandas:替换字符串列值

    我有一个 pandas 数据框 其中有一个我正在尝试格式化的成本列 基本上 替换字符串并将其标准化 因为成本值是从不同来源提取的 还有一些 NaN 这是一些示例数据 2 75 nan 4 150000 25 00 4 50 我有以下代码 用
  • 在tomcat中配置内容安全策略

    我读到了有关配置 实现 Content Security Policy 标头的信息 并且遇到了两种执行此操作的方法 使用实现 Filter 的自定义过滤器 如下所示this https stackoverflow com questions
  • 如何使用 Kusto 在 Grafana 上执行多图时间序列

    嗯 我想这样做 https grafana com docs grafana v9 0 basics timeseries dimensions https grafana com docs grafana v9 0 basics time
  • 为什么“scheduledTimer”在块外设置时会正确触发,但在块内却不能?

    当在完成块外部调用时 以下代码片段可以完美运行 但是当我在块内部设置计时器时 计时器永远不会被触发 我不明白为什么会有差异 self timer Timer scheduledTimer timeInterval 1 target self
  • 在 redux-saga 中等待

    我想在传奇中引入延迟 使用 redux saga 我怎样才能做到这一点 如果 redux saga 提供了 API 我也会对如何手动实现它感兴趣 function save payload yield put pending I want
  • QImage 加载某些图像的方向错误

    我从如下所示的图像文件实例化 QImage 然后将其渲染在 QWidget 上 QImage const QString fileName const char format 0 对于大多数图像来说 一切正常 但对于一些图像 QImage
  • Python venv不创建虚拟环境

    我正在尝试使用以下命令为我当前的 Django 项目创建一个虚拟环境 python3 m venv env 但是该命令不会创建任何包含 bin include lib 文件夹的目录 我在这里到底缺少什么 有时系统的路径环境不知道虚拟环境执行
  • 推送到 Github 时 Git 推送挂起?

    每次我尝试推送到 github 时 Git Push 都会挂起 我正在使用 Cygwin 和 Windows 7 Git 可以在本地跟踪分支 提供状态 设置全局 user name 和 user email 并允许提交 我还是个新手 正在学
  • 使用 Xamarin 在 Android 中播放视频

    在 Xamarin for Android 中使用 VideoView 我想播放资源中的视频 这是代码 var videoView VideoView FindViewById
  • 如何在不使用 ifelse 的情况下基于范围创建因子列?

    我的数据框中有一个数字字段 例如月收入 范围从 15000 印度卢比到 60000 印度卢比不等 我想要一个新字段 比如 Income group 它将有一个与收入范围相对应的数字 比如小于 15000 为 1 大于 15000 但小于 3
  • EXTJS 和 PHP 上传文件

    我在 EXTJS 中使用 UploadFile 示例 http dev sencha com deploy dev examples form file upload html http dev sencha com deploy dev
  • azure托管的mac管道,关于如何使其更快的建议,目前非常慢,在桌面上5分钟,在服务器上接近20

    我有这个管道 效果很好 但每次构建都非常耗时 桌面 xcode 构建需要不到 5 分钟 在 mac 云服务器中需要 20 分钟特别是它下载配置和编译本机 gem 的部分 安装 gems 和 cocoapods 脚本 任务如下然后是下面的 F
  • 分面 ggplot 中轴文本的条件格式

    我正在尝试根据几项研究的效果大小绘制森林图 按其类型 X 或 Y 划分 数据集包括代表 X 类型研究和 Y 类型研究的汇总统计数据的行 指定为study Summary study lt as factor c A B C A B Summ
  • rbenv:ruby:找不到命令

    我在本地目录上使用 rbenv 和 ruby 版本 1 9 1 p378 Command ruby v给出以下错误 rbenv ruby command not found The ruby command exists in these
  • 如何实现每个时间步都带有向量输入的LSTM网络?

    我正在尝试在 Tensorflow 中创建一个生成 LSTM 网络 我有这样的输入向量 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 该矩阵中的每个向量都是一个时间步 或者换句话说 每个向量应该是 LSTM 的一个
  • 如何在 woocommerce 上添加第二个“添加到购物车”按钮

    我想在 woocommerce 产品描述的页面末尾添加第二个 添加到购物车 按钮 我该怎么做呢 非常感谢您的参与 Method 1 id get the ID echo do shortcode add to cart id id Meth
  • 使用循环将按钮设置为 onclicklistener

    我试图使用循环来设置每个按钮单击时的操作 因为大多数按钮只会返回其文本值 但是我收到一条错误消息 指出 变量 i 是从内部类中访问的 需要被宣布为最终版本 我该如何解决这个问题 这是我得到的 String getValuesPressed
  • 使用 Common Lisp 和 Gnuplot 从 emacs 顺序绘制数据

    假设我有一些数据数组 具体来说是一个向量 我可以使用 Gnuplot 按顺序逐个元素地绘制它 这样它看起来就像是通过监视器跟踪的现实生活中的信号吗 我知道我可以使用 Common Lisp 将整个数据写入文本文件 然后使用 gnuplot
  • 红宝石大虾如何在对齐的右图像周围环绕文字?

    是否可以使用 float right 属性将图像向右对齐并将文本环绕在图像周围 就像在 html 和 css 中一样 如果是这样 你该怎么做 我可以对齐图像 但不知道如何将文本环绕在图像周围 文本是动态文本 因此长度变化很大 多谢 瑞克 一
  • Carrierwave 雾 Amazon S3 图像不显示

    我已经安装了CarrierWave和Fog 已经成功上传图像并第一次查看它们 但现在它不再显示图像了 这是我的配置文件应用程序 配置 初始化器 Carrierwave rb CarrierWave configure do config c