【问题标题】:SignatureNotFound with fog-aws and carrierwaveSignatureNotFound 与雾aws 和carrierwave
【发布时间】:2018-03-21 03:23:16
【问题描述】:

我在将文件上传到 aws 并将 aws url 存储在我的本地数据库表中时使用carrierwave 和fog-aws。我创建了carrierwave.rb 文件来配置所有fog-aws 凭据。

begin
 CarrierWave.configure do |config|                      # required
 config.storage = :fog

 config.fog_credentials = {
  :provider               => 'AWS',       # required
  :aws_access_key_id      => 'Key_id',       # required
  :aws_secret_access_key  => 'access_key',       # required
  :region                 => 'us-west-2'  # o\tional, defaults to 'us-east-1'
  # :fog                   => 'host',
  # :endpoint               => 'host'
 }
 config.fog_directory  = 'my-images-server' # required
 # see https://github.com/jnicklas/carrierwave#using-amazon-s3
 # for more optional configuration
 config.fog_public     = true   # optional, defaults to true

我的上传文件包含

class QueryUploader < CarrierWave::Uploader::Base
 storage :fog
 def store_dir
  base_dir = File.join(Rails.root, "public", "uploads")
  "#{base_dir}/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
 end
 def cache_dir
  "/tmp/service-quep"
 end
 def extension_white_list
   %w(sql)
 end
end

我读了很多文章,两天后头疼,仍然找不到任何解决方案。我的访问密钥没有空格,并且存储桶名称没有以斜杠结尾。谁能告诉我这是为什么

Expected(200) Actual(403 Forbidden) excon.error.response :body => "\nSignatureDoesNotMatch我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。 YTUUYUDTDYJBKJNUFYD

错误来了。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 carrierwave fog-aws


    【解决方案1】:

    看,在这种方法上你不需要编写额外的代码,因为 Rails 目录映射自动像如果你使用 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 那么它会自动映射 /public/uploads/...

    你的代码

    def store_dir
        base_dir = File.join(Rails.root, "public", "uploads")
        "#{base_dir}/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end
    

    会的

    def store_dir
      "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end
    

    您可以查看this gist,这非常适合使用 Rails、CarrierWave 和 AWS,您也可以查看check this

    【讨论】:

    • 是的,它可以工作,但我不明白旧商店目录有什么问题?你能解释一下吗。
    • 我认为这是覆盖商店目录的问题,因为我在任何地方都找不到您写给您的问题的内容,理想和有效的是public/...uploads/... 看到这个github.com/carrierwaveuploader/…
    • 是的,可能是。非常感谢傻瓜开发
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    相关资源
    最近更新 更多