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

3

我尝试使用模块Cloudinary::CarrierWave,但是我的所有图片都存储在云根目录中。

我希望所有文件都能够存储到特定的远程文件夹中。

我在我的类中尝试了以下代码:

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

我知道使用Cloudinary::Upload.upload有一些选项,但是由于我在Ruby on Rails中使用简单表单,所以我无法访问此方法。

有没有人有解决办法?

2个回答

1
使用Carrierwave进行服务器端上传时,您可以使用以下代码:
classPictureUploader < CarrierWave::Uploader::Base      
include Cloudinary::CarrierWave
 ...

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

如果您正在使用客户端上传,可以在构建上传标记时设置文件夹参数: <%= 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接