使用 Sidekiq 保存回形针图像
Save Paperclip image with Sidekiq
我正在尝试保存 Paperclip 上传的图像并抛给 Sidekiq 工作人员。
用户 select 将图像转换为图像 [] 并将其传递给控制器(作为参数 [:image])。
查看:
<%= file_field_tag "image[]", type: :file, multiple: true %>
当我将它传递给另一个 var(文件)时,它在控制器中工作,但是当我将它传递给 sidekiq_worker 时,它变成了字符串的散列
控制器:
file = params[:image]
SidekiqWorker.perform_async("import_images", file)
SidekiqWorker
def perform(type, file)
case type
when "import_images"
file.each do |picture|
puts picture.class
puts picture.original_filename
end
Product.import_images(file)
puts "SIDEKIQ_WORKER: IMPORTING IMAGES"
end
end
如何传递图像哈希值的哈希值?或者我怎样才能实现我想做的事情?
之后,图像被处理成模型,但是哈希已经变成了字符串,它不起作用。
def self.import_images(file)
file.each do |picture|
@product = Product.where(code: File.basename(picture.original_filename, ".*"))
if(!@product.nil?)
@product.update(:image=> picture)
end
end
end
感谢您的帮助:)
所以,我刚刚做了什么来实现它...
用户上传文件后,它会将它们保存在一个文件夹中,控制器中的一个变量获取每个图像的名称。
when "Import images"
file = Array.new
params[:image].each do |picture|
File.open(Rails.root.join('public/system/products', 'uploaded', picture.original_filename), 'wb') do |f|
f.write(picture.read)
end
file.push picture.original_filename
end
SidekiqWorker.perform_async("import_images", file,0,0)
redirect_to products_url, notice: "#{t 'controllers.products.images'}"
之后,它传递到我的 sidekiq_worker 并传递到我的模型,我在那里搜索图像并搜索代码等于图像名称的产品。处理后,删除上传图片的文件:)
def self.import_images(file)
file.each do |image|
uploaded = open("public/system/products/uploaded/"+image)
prd = Product.where(code: File.basename(uploaded, '.*'))
if !prd.nil?
prd.update(image: uploaded)
end
File.delete("public/system/products/uploaded/"+image)
end
结束
我正在尝试保存 Paperclip 上传的图像并抛给 Sidekiq 工作人员。 用户 select 将图像转换为图像 [] 并将其传递给控制器(作为参数 [:image])。
查看:
<%= file_field_tag "image[]", type: :file, multiple: true %>
当我将它传递给另一个 var(文件)时,它在控制器中工作,但是当我将它传递给 sidekiq_worker 时,它变成了字符串的散列
控制器:
file = params[:image]
SidekiqWorker.perform_async("import_images", file)
SidekiqWorker
def perform(type, file)
case type
when "import_images"
file.each do |picture|
puts picture.class
puts picture.original_filename
end
Product.import_images(file)
puts "SIDEKIQ_WORKER: IMPORTING IMAGES"
end
end
如何传递图像哈希值的哈希值?或者我怎样才能实现我想做的事情?
之后,图像被处理成模型,但是哈希已经变成了字符串,它不起作用。
def self.import_images(file)
file.each do |picture|
@product = Product.where(code: File.basename(picture.original_filename, ".*"))
if(!@product.nil?)
@product.update(:image=> picture)
end
end
end
感谢您的帮助:)
所以,我刚刚做了什么来实现它...
用户上传文件后,它会将它们保存在一个文件夹中,控制器中的一个变量获取每个图像的名称。
when "Import images"
file = Array.new
params[:image].each do |picture|
File.open(Rails.root.join('public/system/products', 'uploaded', picture.original_filename), 'wb') do |f|
f.write(picture.read)
end
file.push picture.original_filename
end
SidekiqWorker.perform_async("import_images", file,0,0)
redirect_to products_url, notice: "#{t 'controllers.products.images'}"
之后,它传递到我的 sidekiq_worker 并传递到我的模型,我在那里搜索图像并搜索代码等于图像名称的产品。处理后,删除上传图片的文件:)
def self.import_images(file)
file.each do |image|
uploaded = open("public/system/products/uploaded/"+image)
prd = Product.where(code: File.basename(uploaded, '.*'))
if !prd.nil?
prd.update(image: uploaded)
end
File.delete("public/system/products/uploaded/"+image)
end
结束