使用 Carrierwave remote_image_url,如何设置要使用的文件名?
Using Carrierwave remote_image_url, how can you set the filename to use?
我目前正在使用 Carrierwave 远程下载图像。这工作正常。我想弄清楚的是如何将文件名设置为不同于从 URL 下载的文件名。
这是我的抽佣任务:
@desk.desk_images.create(
:file_name_to_use => "testing",
:remote_image_url => photo.url(size)
)
在我的上传者群中:desk_image_uploader.rb
class DeskImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process resize_to_fill: [200, 150]
process :quality => 90
def full_filename(for_file = model.logo.file)
parts = for_file.split('.')
extension = parts[-1]
name = parts[0...-1].join('.')
"#{model.file_name_to_use}_#{version_name}.#{extension}"
end
end
end
desk_image.rb
class DeskImage < ActiveRecord::Base
belongs_to :desk
mount_uploader :image, DeskImageUploader
attr_accessor :file_name_to_use
end
这没有正确存储在数据库中。 DeskImage.image 正在存储原始文件名而不是我传递的覆盖 "testing"...
有人知道我如何自定义 Carrierwave 存储在数据库中并使用的文件名吗?
谢谢
好的,我已经对您的代码进行了一些精简,以确保我们可以确定没有任何混杂因素。第一步是将 filename
移出 version
块。你能试试这个吗:
class DeskImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process resize_to_fill: [200, 150]
process :quality => 90
end
def filename
"test-#{model.id}.#{File.extname(super)}"
end
end
我目前正在使用 Carrierwave 远程下载图像。这工作正常。我想弄清楚的是如何将文件名设置为不同于从 URL 下载的文件名。
这是我的抽佣任务:
@desk.desk_images.create(
:file_name_to_use => "testing",
:remote_image_url => photo.url(size)
)
在我的上传者群中:desk_image_uploader.rb
class DeskImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process resize_to_fill: [200, 150]
process :quality => 90
def full_filename(for_file = model.logo.file)
parts = for_file.split('.')
extension = parts[-1]
name = parts[0...-1].join('.')
"#{model.file_name_to_use}_#{version_name}.#{extension}"
end
end
end
desk_image.rb
class DeskImage < ActiveRecord::Base
belongs_to :desk
mount_uploader :image, DeskImageUploader
attr_accessor :file_name_to_use
end
这没有正确存储在数据库中。 DeskImage.image 正在存储原始文件名而不是我传递的覆盖 "testing"...
有人知道我如何自定义 Carrierwave 存储在数据库中并使用的文件名吗?
谢谢
好的,我已经对您的代码进行了一些精简,以确保我们可以确定没有任何混杂因素。第一步是将 filename
移出 version
块。你能试试这个吗:
class DeskImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process resize_to_fill: [200, 150]
process :quality => 90
end
def filename
"test-#{model.id}.#{File.extname(super)}"
end
end