我正在使用'paperclip'gem来上传开发中的图像/文件。它通常将文件存储在tmp文件夹中。一切都很好,但没有生产。
我在这里有两个问题。
1)在heroku中,我能够上传图像。但是,一段时间后它们会被删除。 为什么会这样?当我们将文件上传到heroku时,文件显然存储在某个位置。他们为什么被删除?
2)在AWS ec2中,我无法上传图像/文件。我是否需要设置将文件存储到公用文件夹的权限?安装rmagick也可以使回形针工作。我不知道要发布什么细节。
Noob在这里!
修改 第二个问题是重复:我在这里链接帖子。 paperclip working in development but not working in production?
答案 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
<强>回形针强>
由于您是初学者,以下是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
如果您想使用亚马逊网络服务,请查看此文档,这对您非常有帮助。