【问题标题】:public_id doesn't match between cloudinary and carrierwavecloudinary 和carrierwave 之间的public_id 不匹配
【发布时间】:2015-12-06 05:48:06
【问题描述】:

我正在使用 CarrierWave 和 Cloudinary 将多张图片上传到我的博文。我从浏览器上传它们。 使用post 表单中的文件字段会发生这种情况。

<%=file_field_tag "images[]", type: :file, multiple: true %>

提交表单时,会为每个图像创建一个picture 实例,并将图像上传到 Cloudinary。

def create
    @post = Post.new(post_params)
    if @post.save
        if params[:images]
            params[:images].each do |image|
                @post.pictures.create(image: image)
                Cloudinary::Uploader.upload(image)
            end
        end
    end
end

我使用的 ImageUploader 几乎是默认的(除了包含 cloudinary 插件)

class ImageUploader < CarrierWave::Uploader::Base
  include Cloudinary::CarrierWave
  storage :file
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end 
end

现在,图像正在保存到我的服务器,并且图像正在上传到 cloudinary。但不知何故,public_id's 永远不会匹配。有谁明白为什么不?当我调用Cloudinary::Uploader.upload(image) 时是否创建了新的public_id

【问题讨论】:

    标签: ruby-on-rails carrierwave cloudinary


    【解决方案1】:

    在检查了 Tal Lev-Ami(非常感谢!)向我推荐的项目后,我发现我的 ImageUploader 的问题在于这条线

    storage :file
    

    注释掉这一行后,一切正常(而且我不必手动上传图片)。如果有人理解为什么这条线会导致问题,请成为我的客人,将其张贴在这里以供将来参考。

    【讨论】:

      【解决方案2】:

      无需手动将图片上传到 Cloudinary。使用 CarrierWave 上传器时,图片会自动上传到 Cloudinary 并在模型中更新 public_id。

      【讨论】:

      • 我的并没有这样做……它会自动创建一个云 URL,是的。但是没有上传。然后当我手动上传时,链接不匹配。
      • 您在使用 ActiveRecord 吗?图片对象是否保存成功?确定没有上传? (注意使用 cloudinary 时 store_dir 无效)。
      • 我正在使用 ActiveRecord,图片对象已成功保存到服务器,因为当我在 ImageUploader 中不包含 Cloudinary 插件时,一切正常。而且我确定它没有上传,因为当我转到我的云帐户时,没有图片,除非我使用.upload() 方法手动上传它们。
      • 您能看看下面的示例项目是否适合您吗? github.com/taragano/Cloudinary_multiple_uploads 设置它 - git clone 项目,运行 bundle,将 cloudinary.yml 复制到 config 目录并运行 rake db:migrate
      • 它起作用了,让我弄清楚出了什么问题。看我的回答
      猜你喜欢
      • 2017-04-20
      • 2015-10-20
      • 2013-06-17
      • 2018-05-19
      • 2021-06-19
      • 2012-10-09
      • 2015-10-22
      • 2017-10-08
      • 2018-06-23
      相关资源
      最近更新 更多