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

Posted

技术标签:

【中文标题】Cloudinary::CarrierWave 如何在 Cloudinary 中选择上传文件夹【英文标题】:Cloudinary::CarrierWave how to select the upload folder in Cloudinary 【发布时间】:2019-01-24 17:00:57 【问题描述】:

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

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

我在课堂上试试这个:

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

我知道Cloudinary::Upload.upload 有一些选项,但是由于我在 ruby​​ on rails 中使用简单的表单,因此我无法使用此方法。

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

【问题讨论】:

【参考方案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") %>

【讨论】:

【参考方案2】:

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

我做了这样的事情来分隔文件夹,但有时 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

【讨论】:

以上是关于Cloudinary::CarrierWave 如何在 Cloudinary 中选择上传文件夹的主要内容,如果未能解决你的问题,请参考以下文章

使用Cloudinary,Carrierwave,Ckeditor和Rails Admin时出现问题

需要实现#cache!如果你想使用 Cloudinary::CarrierWave::Storage 作为缓存存储

如何用PHP控制文件上传类型?如*.jpg.

如何为 iOS 项目创建类引用,如 NSDictionary 类引用 - Apple Developer

如何生成 4 位唯一 id,如 discord id,如 #8052

如何为 pytz 处理 POSIX 时区信息(如 CST)?