【问题标题】:How to know if an image has been uploaded or not? - Paperclip如何知道图片是否已上传? - 回形针
【发布时间】:2011-08-01 10:02:16
【问题描述】:

不知道有没有办法知道图片是否上传了?

我的意思是,我有一个 Foo_Class,这个类可以有一个附加的图像,但它的存在不是必需的。有没有办法知道该类的特定实例是否有图像?

谢谢!

【问题讨论】:

    标签: ruby-on-rails-3 paperclip


    【解决方案1】:

    当您将回形针添加到模型中时,您添加了回形针特定行,我的是

    cover_file_name
    cover_content_type
    cover_file_size
    cover_updated_at
    

    然后我检查它是否为nil

     Foo_Class.cover_file_name.nil? 
    

    【讨论】:

      【解决方案2】:

      如果 foo.image? 返回 true,则文件已上传。

      【讨论】:

      • 现在是foo.image.exists?
      • 如果你设置了:default_url => 'missing.png' 呢?那会被视为foo.image.exists?
      • 答案是:不,会返回false
      • 此技术会转到服务器并检查文件是否存在。投票赞成技术检查它是否已被处理并已生成 URL。赞成的解决方案保存了查找(可能在 S3 上),但它不检查文件是否确实存在于图像服务器上(您可能希望或可能不希望检查。
      【解决方案3】:

      我认为正确的解决方案是使用file? 方法。

      foo.image.file?

      http://rdoc.info/github/thoughtbot/paperclip/Paperclip/Attachment#file%3F-instance_method

      使用存在吗?将向服务器发出请求以检查文件是否存在,这可能会很慢,特别是如果它位于不同的服务器或 S3 上。

      使用 foo.image_file_name.nil?可能与文件相同?在幕后,但你不想依赖回形针的实现,这有朝一日可能会改变。

      【讨论】:

        【解决方案4】:

        如果这是我的模型

        has_attached_file :avatar, :styles => {:logo => "230x50>", :card_image => "180x50>"}
        

        您可以检查图像是否为用户上传,即@user

        <%= @user.avatar.exists? %>
        

        这将返回布尔值。

        【讨论】:

        • 如果您的文件在 S3 上,这将触发对 S3 的请求。
        【解决方案5】:

        假设您要检查 Foo 模型中第一行的附件(图像)是否存在:

        image_present = Foo.first.image?
        

        如果附件存在,则返回 true。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-05-29
          • 1970-01-01
          • 1970-01-01
          • 2012-03-13
          • 2016-09-01
          • 2020-12-02
          • 2015-05-09
          相关资源
          最近更新 更多