Я использовал Carrierwave & Cloudinary в своем приложении Rails 5.2.1 для загрузки, манипулирования и хранения клиентских файлов.Я добавляю поддержку видео и столкнулся с проблемой .url.Версия преобразует видео в миниатюру png.Cloudinary показывает эту миниатюру в «video / upload», в то время как все остальные миниатюры изображений используют «image / upload».В загрузчике должен быть способ вернуть путь миниатюрного png видео, используя «video / upload».Кто-нибудь еще ударил по этому?
carrierwave 1.3.1
cloudinary 1.11.1
user_media_uploader.rb
class UserMediaUploader < CarrierWave::Uploader::Base
include Cloudinary::CarrierWave
IMAGE_MIMES = %w(image/jpeg image/gif image/png image/bmp)
VIDEO_MIMES = %w(video/mpeg video/mp4 video/quicktime video/webm video/3gpp video/3gpp2 video/3gpp-tt video/H261 video/H263 video/H263-1998 video/H263-2000 video/H264)
TEXT_MIMES = %w(text/vcard text/csv text/rtf text/richtext text/calendar text/directory)
APPLICATION_MIMES = %w(application/pdf)
AUDIO_MIMES = %w(audio/basic audio/L24 audio/mp4 audio/mpeg audio/ogg audio/vorbis audio/vnd.rn-realaudio audio/vnd.wave audio/3gpp audio/3gpp2 audio/ac3 audio/vnd.wave audio/webm audio/amr-nb audio/amr)
# general processing
process :assign_attributes
# Provide a default URL as a default if there hasn't been a file uploaded
def default_url(*args)
# ActionController::Base.helpers.asset_path([version_name, "file_name.svg"].compact.join('_'))
end
# create a standard version
version :standard do
process convert: 'png'
process resize_to_fit: [400, 400]
end
# create a thumbnail version
version :thumb do
process eager: true
process convert: 'png'
process resize_to_fit: [90, 90]
end
# image tag & folder on Cloudinary
def assign_attributes
return {:tags => "", :folder => "clients/#{model.user.client_id.to_s}/users/#{model.user_id.to_s}"}
end
# maximum file size
def size_range
1..150.megabytes
end
# content type white list
def content_type_whitelist
IMAGE_MIMES + VIDEO_MIMES + TEXT_MIMES + APPLICATION_MIMES + AUDIO_MIMES
end
# content type black list
def content_type_blacklist
['application/text', 'application/json']
end
end
После загрузки видео в CloudinaryСледующие URL-адреса доступны в консоли Cloudinary ...
Видео: https://res.cloudinary.com/hcfhlrdjg/video/upload/v1558730289/clients/2/contacts/29/file_name.3gp
Миниатюра: http://res.cloudinary.com/hcfhlrdjg/video/upload/c_fit,h_90,w_90/v1558730289/clients/2/contacts/29/file_name.png
Carrierwave создает следующие URL-адреса ...
Видео:
client_attachment.image.url
https://res.cloudinary.com/hcfhlrdjg/video/upload/v1558730289/clients/2/contacts/29/file_name.3gp
Миниатюра:
client_attachment.image.thumb.url
https://res.cloudinary.com/hcfhlrdjg/image/upload/c_fit,h_90,w_90/v1558730289/clients/2/contacts/29/file_name.png
thumbnail "image / upload" должен быть "video / upload".