【问题标题】:Image uploading and storing in production生产中的图像上传和存储
【发布时间】:2014-05-03 00:10:37
【问题描述】:

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

我有两个问题。

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

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

这里是菜鸟!

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

【问题讨论】:

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


    【解决方案1】:

    1) 您的 Heroku 图像正在被您的新提交删除(每次您提交到 Heroku,它都会用新文件替换您的所有文件 - 包括您的 images 目录)。 Heroku documentation 向您描述了为什么会发生这种情况

    2) 据我了解,AWS/EC2 仅用于处理 - 您需要store your assets (inc images) in an S3 bucket。 Paperclip 原生支持 S3,这意味着无论您是在 AWS 还是 Heroku 上运行,您都可以将图像存储在 S3 中


    回形针

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

    #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

    【讨论】:

      【解决方案2】:

      Heroku 只将上传的图片保留一段时间,然后自动删除它,因为 Heroku 只有只读文件系统。 阅读以下内容了解更多详情>>https://devcenter.heroku.com/articles/read-only-filesystem

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

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

      【讨论】:

        猜你喜欢
        • 2012-04-28
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 2016-10-11
        • 2018-07-04
        • 2020-10-11
        • 2017-01-16
        • 2015-03-17
        相关资源
        最近更新 更多