【发布时间】:2017-09-11 19:43:19
【问题描述】:
我创建了一个 rails api,但我在上传图片时遇到了问题。 我正在使用carrierwave,图片上传正常,但链接错误。
例子:
这是我在 RESTful api 中找到的链接:
https://s3.eu-west-2.amazonaws.com/gpsql/uploads/driver/picture/35/imagename.png
但是当我检查 S3 存储时,我发现了一个不同的链接:
https://s3.eu-west-2.amazonaws.com/gpsql/gpsql/gpsql/uploads/driver/picture/35/imagename.png
这是 s3 载波的初始化器:
CarrierWave.configure do |config|
config.fog_provider = 'fog/aws' # required
config.fog_credentials = {
provider: 'AWS', # required
aws_access_key_id: '...', # required
aws_secret_access_key: '...', # required
region: 'us-west-2',
path_style: true,
}
config.fog_directory = 'gpsql' # required
config.asset_host = 'https://s3.eu-west-2.amazonaws.com/gpsql'
config.fog_attributes = {'Cache-Control' => "max-age=#{365.day.to_i}"} # optional, defaults to {}
end
在图片上传器中:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
如何修复 RESTful api 中显示的链接以及为什么亚马逊链接中有这么多“存储桶名称”为什么不是简单的链接/存储桶名称/image.png
对于我在 restful api 中找到的第一个链接,它根本不起作用我在 amazon s3 中的第二个链接被拒绝或找不到密钥,它可以正常工作。
【问题讨论】:
-
你试过没有
config.asset_host,删除它并重新启动rails服务器。 -
是的,我试过了。它最初并不存在,这是我尝试过的解决方案之一,但遗憾的是没有任何效果。 @7urkm3n
-
您是否尝试过删除
config.asset_host并在雾凭据中添加主机和端点?:host: 's3.example.com', endpoint: 'https://regionendpointhere.amazonaws.com?如fog + s3的文档中所述? -
@jenvvv 我试过但没用。我不知道为什么,但添加:
config.fog_public=true修复了现在存在的链接是正确的 100%。
标签: ruby-on-rails amazon-web-services amazon-s3 carrierwave rails-api