7

这是我的情况。

我正在使用回形针让用户上传图像。它做得很好,一切都很好。然后,我把它推到了heroku。目前,我可以看到用户刚刚上传的所有图片。但是,每次进行新的提交并再次推送到 heroku,我以前的所有图像都消失了。好像没有文件了,加载不出来。

所以,我的想法是:每次我推送到heroku服务器时,本地的图像文件都会上传到heroku服务器吗?

我为我的问题做了研究,我真的不明白他们对heroku的实际说法,我不知道这对我来说是不是同样的问题。

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

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

我发现Amazon S3需要信用卡注册,如果我没有信用卡,我就不能使用他们的服务??

感谢您提供任何详细的建议和解释。谢谢

4

1 回答 1

5

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

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

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

production:
  access_key_id: AAAAAAAAAAAAAAAAAA
  secret_access_key: BBBBBBBBBBBBBBBBBBBBBBBBBBB
  bucket: assets.my-bucket

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

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

我希望它有帮助

于 2012-05-03T07:27:20.863 回答