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 作为缓存存储
如何为 iOS 项目创建类引用,如 NSDictionary 类引用 - Apple Developer