簡體   English   中英

回形針URL助手在使用S3時提供錯誤的URL

[英]Paperclip URL helper providing wrong URL when using S3

我將Paperclip gem與Rails一起使用來上傳圖像,當我將img標簽幫助程序與gem一起使用時,它會輸出錯誤的URL。 這是模型代碼:

class Org < ActiveRecord::Base
    has_many :event
    has_many :solookup
    belongs_to :student

    has_attached_file :org_pic, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/assets/clubhouse.jpg", :storage => :s3, :s3_credentials => Proc.new{|a| a.instance.s3_credentials}, :s3_host_name => "branchapp.s3.amazonaws.com"
    validates_attachment_content_type :org_pic, :content_type => /\Aimage\/.*\Z/

    def s3_credentials
        {:bucket => "branchapp", :access_key_id => "hidden", :secret_access_key => "hidden"}
    end
end

上傳效果很好,但是輸出的網址是這樣的:

http://branchapp.s3.amazonaws.com/branchapp/orgs/org_pics/000/000/002/original/IMG_0539.JPG?1396413590

我無法弄清楚如何在.com之后刪除/ branchapp。 如果將其刪除,則鏈接可以正常工作。 我怎樣才能做到這一點?

has_attached_file您需要覆蓋url選項。 默認情況下,該URL使用":s3_path_url" ,這將存儲桶放入您所看到的URL中。 您需要改用":s3_domain_url"

加:

:url => ":s3_domain_url"

您的has_attached_file選項。

注意: ":s3_domain_url"應在主機名稱前添加存儲桶名稱,因此您可能需要從s3_host_name選項中刪除branchapp :s3_host_name => "s3.amazonaws.com"

為了給您更多的輸入,您可能希望看看Paperslip:s3文檔 我們使用以下設置(效果很好):

#config/environments/production.rb
config.action_controller.asset_host = "//#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com" 

Paperclip::Attachment.default_options.merge!({
   storage: :s3,
   s3_host_name: 's3-eu-west-1.amazonaws.com',
   s3_credentials: {
      access_key_id: ENV['AWS_ACCESS_KEY_ID'],
      secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
   },
   bucket: ENV['S3_BUCKET_NAME']
})

這使我們可以調用:

#app/models/image.rb
Class Image < ActiveRecord::Base
    has_attached_file :image
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM