图像上传和存储在生产中

时间:2014-03-25 09:03:54

标签: ruby-on-rails heroku amazon-ec2 paperclip

我正在使用'paperclip'gem来上传开发中的图像/文件。它通常将文件存储在tmp文件夹中。一切都很好,但没有生产。

我在这里有两个问题。

1)在heroku中,我能够上传图像。但是,一段时间后它们会被删除。 为什么会这样?当我们将文件上传到heroku时,文件显然存储在某个位置。他们为什么被删除?

2)在AWS ec2中,我无法上传图像/文件。我是否需要设置将文件存储到公用文件夹的权限?安装rmagick也可以使回形针工作。我不知道要发布什么细节。

Noob在这里!

修改 第二个问题是重复:我在这里链接帖子。 paperclip working in development but not working in production?

2 个答案:

答案 0 :(得分:3)

1)你的Heroku图像被你的新提交删除(每次你提交Heroku时,它都会用新的文件替换你的所有文件 - 包括你的images dir)。 Heroku documentation为您提供了发生这种情况的原因

2)根据我的理解,AWS/EC2仅用于处理 - 您需要store your assets (inc images) in an S3 bucket。 Paperclip本身适用于S3,这意味着无论您是在AWS还是Heroku

运行,您都可以将图像存储在S3中

<强>回形针

由于您是初学者,以下是Paperclip的一些详细信息:

#app/models/image.rb
Class Image < ActiveRecord::Base
    has_attached_file :image
    validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
end

#config/application.rb
:storage => :s3,
  :s3_credentials => {
    :bucket => ENV['S3_BUCKET_NAME'],
    :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
    :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
  }
}

你需要知道Paperclip实际上并没有“存储”图像 - 它只是将它们传输到不同的位置。创建数据库条目。这意味着您应该为Paperclip唯一担心的是它存储的位置,以及图像的大小(使用rMagick

答案 1 :(得分:0)

Heroku只保留上传的图像几次,然后自动将其删除,因为heroku只有只读文件系统。 请阅读以下内容以获取更多详细信息&gt;&gt; https://devcenter.heroku.com/articles/read-only-filesystem

如果您想使用亚马逊网络服务,请查看此文档,这对您非常有帮助。

https://devcenter.heroku.com/articles/paperclip-s3