Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 回形针S3图像路径问题_Amazon S3_Paperclip_Ruby On Rails 3.2 - Fatal编程技术网

Amazon s3 回形针S3图像路径问题

Amazon s3 回形针S3图像路径问题,amazon-s3,paperclip,ruby-on-rails-3.2,Amazon S3,Paperclip,Ruby On Rails 3.2,我刚刚从Rails 3.1升级到Rails 3.2.6,我的回形针照片路径现在已经在生产中中断 photo.rb if Rails.env == "production" has_attached_file :image, :storage => :s3, :s3_credentials => S3_CREDENTIALS, :url => "/app/public/system/images/:id/:style/:basename.:extens

我刚刚从Rails 3.1升级到Rails 3.2.6,我的回形针照片路径现在已经在生产中中断

photo.rb

if Rails.env == "production"
  has_attached_file :image,
    :storage => :s3,
    :s3_credentials => S3_CREDENTIALS,
    :url => "/app/public/system/images/:id/:style/:basename.:extension",
我需要这样的结果路径:
http://s3.amazonaws.com/photoramblr/app/public/system/images/5/thumb_large/image.jpg

但是,上述url设置会导致:
http://s3.amazonaws.com/photoramblr/app/public/app/public/system/images/5/thumb_large/image.jpg

我还尝试将回形针url设置为
:url=>“/system/images/:id/:style/:basename.:extension”
,但结果是该url:
http://s3.amazonaws.com/photoramblr/images/5/thumb_large/image.jpg

有没有关于如何正确设置的想法


更新:我仍然不明白它是如何工作的,但我只是通过将文件移动到它正在查找的位置来“修复”这个问题。

尝试添加一个path参数来替换url参数,并在bucket名称下指定存储文件的路径,url将根据bucket和提供的路径构建。这里有一个链接,以获取更多详细信息。如果您提供一个url参数,它将相对于您的“app/public”进行处理。这就解释了为什么生成的图像路径加倍为“app/public”。Ryan Bate也解释了这种行为。 在您的情况下,您的代码如下所示

if Rails.env.production?
  has_attached_file :image,
    :storage => :s3,
    :s3_credentials => S3_CREDENTIALS,
    :path => "app/public/system/images/:id/:style/:basename.:extension",

您得到的链接将是(我假设您的bucket名称是链接中的photorambler);s3.amazonaws.com/photorambler/app/public/system/images/5/thumb_large/image.jpg

尝试添加一个path参数来替换url参数,并在bucket名称下指定存储文件的路径,url将根据bucket和提供的路径构建。这里有一个链接,以获取更多详细信息。如果您提供一个url参数,它将相对于您的“app/public”进行处理。这就解释了为什么生成的图像路径加倍为“app/public”。Ryan Bate也解释了这种行为。 在您的情况下,您的代码如下所示

if Rails.env.production?
  has_attached_file :image,
    :storage => :s3,
    :s3_credentials => S3_CREDENTIALS,
    :path => "app/public/system/images/:id/:style/:basename.:extension",
您得到的链接将是(我假设您的bucket名称是链接中的photorambler);s3.amazonaws.com/photorambler/app/public/system/images/5/thumb_large/image.jpg