我遵循了这个教程:http://lifesforlearning.com/uploading-images-with-carrierwave-to-s3-on-rails/我有工作载波上传器将文件存储到磁盘空间我一步一步做了什么:1)添加 fog
gem并运行 bundle install
和 bundle update
2)在config / initializers中我创建了r3.rb文件:
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => 'mykey',
:aws_secret_access_key => 'mysecretkey',
:region => 'us-west-2' # Change this for different AWS region.
}
config.fog_directory = "bucket-main"
end
我跑了rails并试图保存一些照片 . 但正如你在图片上看到的那样,我的存储桶是空的 . 所以它们必须存储在我的磁盘上 . 现在我该怎么做?
更新我将存储更改为雾 .
这是我的photouploader类代码:
# encoding: utf-8
class PhotoUploader < CarrierWave::Uploader::Base
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
现在我收到这个错误:
hostname“bucket-main.bucket-main.s3-us-west-1.amazonaws.com”与服务器证书不匹配(OpenSSL :: SSL :: SSLError)
3 回答
我最终通过更新
bundle update fog
和bundle update carrierwave
解决了我的问题尝试将
path_style
添加到您的配置和fog_directory
我只花了几个小时来追踪这个错误的原因,我也得到了:
奇怪的是如何在主机名中重复两次桶名称 . 事实证明我配置了错误的区域名称 . 请注意你的
config.fog_credentials
...但异常中的主机名有
s3-us-west-1
?如果您的存储桶位于一个AWS区域中,但您在Fog凭据中配置了不同的区域,则Fog将尝试遵循AWS的重定向,并且在这种情况下,存储桶名称会以某种方式加倍 . Fog会发出关于重定向的警告,但Carrierwave最终会将此隐藏起来 .将您的Fog凭据中的
:region
设置为存储桶实际位于AWS中的位置,does not match the server certificate
异常将停止发生 .