我创建了一个导轨API,但我的图像上传有问题。我正在使用载波,图片的上传正在正常工作,但链接错误。
示例:
这是我在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/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中显示的链接,也是为什么在Amazon链接中有这么多的"存储桶名",为什么不直接链接/bucketName/image.png
对于我在Restful API中发现的第一个链接,它根本无法使用,我无法访问或在Amazon S3中找到的第二个链接,它没有任何问题。
问题之一是这个
config.asset_host = 'https://s3.eu-west-2.amazonaws.com/gpsql'
应该是
config.asset_host = 'https://s3.eu-west-2.amazonaws.com'
无论如何我都不知道为什么要重复两次...
因此,如果可以的话,应该在配置中修复它,然后将S3中的文件夹移动到适当的位置
如果您不能移动它,我会尝试将商店dir更改为 "gpsql/gpsql/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
我不确定这是否有效,但这将是我的第一步