Cloudinary :: CarrierWave如何在Cloudinary中选择上传文件夹

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

我尝试使用模块Cloudinary::CarrierWave,但我的所有图像都存储在云的根文件夹中。

我希望我的所有文件都转到特定的远程文件夹。

我在课堂上尝试这个:

class PhotoUploader < CarrierWave::Uploader::Base
    include Cloudinary::CarrierWave
    def storage_identifier
        'specific_folder'
    end
end

我知道Cloudinary::Upload.upload有一些选项,但是当我在rails上的ruby中使用简单形式时,我无法访问此方法。

有人有想法解决这个问题吗?

ruby-on-rails carrierwave cloudinary
2个回答
0
投票

将Carrierwave与服务器端上载一起使用时,您可以使用如下代码:

classPictureUploader < CarrierWave::Uploader::Base      
include Cloudinary::CarrierWave
 ...

  def public_id
    return "my_folder/" + model.short_name
   end  
 end

如果您正在使用客户端上载,则可以在构建upload标记时设置folder参数:

<%= f.cl_image_upload(:image, :folder => "my_folder") %>


0
投票

感谢您的回答,我在您的帮助下解决了这个问题,我可以提供一些其他提示。

我做了这样的事情来分隔文件夹,但有时model.id不存在(我应该添加一个if else)

def public_id
  "artpieces/#{model.class}/#{model.id}"
end

此代码对我不起作用:

<%= f.cl_image_upload(:image, :folder => "my_folder") %>

我可以直接写:

<%= f.input :photo, input_html: {accept: ('image') } %>

因为我的输入已经是PhotoUploader在模型中声明如下:

mount_uploader :photo, PhotoUploader
© www.soinside.com 2019 - 2024. All rights reserved.