0

我创建了一个轨道API,但我有一个图像上传的问题。 我正在使用carrierwave,图片的上传工作正常,但我得到一个错误的链接。轨道载波链接生成不同于S3存储链接

例子:

这是我在REST风格的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的初始化程序:

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 

如何解决所显示的REST风格的API也就是为什么有那么多的“水桶名”在亚马逊链接的链接为什么不是简单的链接/ bucketname /image.png

对于我在restful api中找到的第一个链接,它根本无法使用我在第二个amazon s3中获取访问被拒绝或者找不到密钥,它没有任何问题。

+0

具有u尝试没有'配置。 asset_host',将其删除并重新启动Rails服务器。 – 7urkm3n

+0

是的,我尝试过。它不在那里首先它是我尝试的解决方案之一,但没有伤心地工作。 @ 7urkm3n –

+0

您是否尝试删除'config.asset_host'并在您的雾凭证中添加主机和端点?:'host:'s3.example.com',端点:'https://regionendpointhere.amazonaws.com' ?如fog + s3的文档中所述? – catch22

回答

0

一个问题是这样的

config.asset_host = 'https://s3.eu-west-2.amazonaws.com/gpsql'

应该

config.asset_host = 'https://s3.eu-west-2.amazonaws.com'

无论如何,我不知道为什么它重复两次......

所以,如果你可以,你应该修复它的配置,并将S3中的文件夹移动到适当的位置

如果你不能移动它,我会尝试去商店目录更改为"gpsql/gpsql/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"

我不知道是否可行,但是这将是我的第一步

+0

可悲的是,该解决方案根本无法工作。该链接仍然不同于S3存储... S3存储:https://s3.eu-west-2.amazonaws.com/gpsql/gpsql/gpsql/gpsql/uploads/driver/picture/88/image .png and for restful api我有https://s3.eu-west-2.amazonaws.com/gpsql/gpsql/uploads/driver/picture/88/image.png –