每次推送到heroku,图像都没有显示,回形针

Nic*_* Ng 7 postgresql ruby-on-rails heroku amazon-s3 paperclip

这是我的情况.

我正在使用paperclip让用户上传图片.它做得很好,一切都很好.然后,我把它推到了heroku.对于妈妈,我可以看到所有用户上传的图片.但是,每次进行新的提交并再次推送到heroku时,我之前的所有图像都消失了.好像没有文件了,无法加载它.

所以,在这里我的想法是:每当我推送到heroku服务器时,本地的图像文件是否已上传到heroku服务器?

我为它研究了我的问题,我真的不明白他们对heroku的实际说法,我不知道是不是我的问题.

Heroku有一个只读文件系统.这意味着Paperclip无法将上传的文件保存到Heroku中的任何位置.

如果您希望能够将文件上载到Heroku上托管的应用程序,则必须将文件作为二进制blob存储在数据库中,或者必须使用单独的服务来存储文件.如果您正在寻找单独的服务,Paperclip内置支持与Amazon S3集成.

我发现亚马逊S3需要信用卡才能注册,如果我没有信用卡,那么我不能使用他们的服务?

任何细节建议和解释都表示赞赏.谢谢

Cup*_*ils 5

亚马逊不是免费设备,您必须提供信用卡号码才能使用它.但是,您只需支付使用的费用,但这并不昂贵.例如,对于我的网站,上个月我支付了2.46美元的15Gb存储空间,我支付了1.90美元用于16Gb数据传输.

要将S3与回形针一起使用,您需要添加gem 'aws-s3'到您的Gemfile

接下来,您需要添加config/s3.yml资产凭据,例如:

production:
  access_key_id: AAAAAAAAAAAAAAAAAA
  secret_access_key: BBBBBBBBBBBBBBBBBBBBBBBBBBB
  bucket: assets.my-bucket
Run Code Online (Sandbox Code Playgroud)

然后我有一个存储我的资产的模型,例如:

class Asset
  has_attached_file :asset, 
    :styles => {  :thumb => "60x60#", :large => "700x330#"},
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/s3.yml",
    :path => "/images/:id/:style.:extension"
  validates_attachment_content_type :asset, :content_type => ['image/gif', 'image/jpeg', 'image/png', 'image/x-ms-bmp']
end
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助