我正在使用'paperclip'gem来上传开发中的图像/文件。 它通常将文件存储在tmp文件夹中。 一切都很好,但没有生产。
我这里有两个问题。
1)在heroku中,我能够上传图像。 但是,一段时间后它们会被删除。 为什么会这样? 当我们将文件上传到heroku时,文件显然存储在某个位置。 他们为什么被删除?
2)在AWS ec2中,我无法上传图像/文件。 我是否需要设置将文件存储到公用文件夹的权限? 安装rmagick也可以使回形针工作。 我不知道要发布什么细节。
Noob在这里!
编辑:第二个问题是重复:我在这里链接帖子。 回形针在开发中工作但不在生产中工作?
1)你的新提交正在删除你的Heroku图像(每次你提交Heroku时,它会用新的文件替换你的所有文件 - 包括你的images
目录)。 Heroku文档为您提供了为什么会发生这种情况的描述
2)根据我的理解, AWS/EC2
仅用于处理 - 您需要将资产( images
)存储在S3
存储桶中 。 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
)
Heroku只保留上传的图像几次,然后自动删除它,因为heroku只有只读文件系统。 请阅读以下内容以获取更多详细信息>> https://devcenter.heroku.com/articles/read-only-filesystem
如果您想使用亚马逊网络服务,请查看此文档,这对您非常有帮助。