图像上传和存储在生产中

问题描述 投票:1回答:2

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

我这里有两个问题。

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

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

Noob在这里!

编辑:第二个问题是重复:我在这里链接帖子。 回形针在开发中工作但不在生产中工作?

ruby-on-rails heroku amazon-ec2 paperclip
2个回答
3
投票

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.