Ich versuche, die Paperclip hochgeladen Bilder speichern einen Sidekiq Arbeiter zu speichern. Der Benutzer wählt die Bilder in ein Bild [] und übergibt sie an den Controller (als Parameter [: Bild]).Speichern Paperclip Bild mit Sidekiq
Ausblick:
<%= file_field_tag "image[]", type: :file, multiple: true %>
Wenn ich es auf einen anderen var (Dateien) übergeben, es in die Steuerung funktioniert, aber wenn ich es dem sidekiq_worker passieren, verwandelt es in einen Hash von Strings
Controller:
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
Wie kann ich einen Hash von Image-Hashes übergeben? Oder wie kann ich erreichen, was ich tun möchte?
Danach werden die Bilder zu einem Modell verarbeitet, aber der Hash wurde bereits in eine Zeichenfolge umgewandelt und es funktioniert nicht.
def self.import_images(file)
file.each do |picture|
@product = Product.where(code: File.basename(picture.original_filename, ".*"))
if([email protected]?)
@product.update(:image=> picture)
end
end
end
Vielen Dank für Ihre Hilfe :)
sorry, warum mit sidekiq? Sie können dies einfach mit Carrierwave mehrere Bilder hochladen, es gibt so viele Anleitungen dazu und Sie können auf Amazon S3-Speicher hochladen https://github.com/carrierwaveuploader/carrierwave#multiple-file-uploads https: // stackoverflow .com/questions/19712816/carrierwave-rails-4-und-multiple-uploads –
Ich benutze Heroku und manchmal die Anwendungszeit, abhängig von der Anzahl der hochgeladenen Bilder. Ich brauche dies in einem zweiten Plan-Prozess Kann ich das mit Carrierwave tun? Danke :) –
Ich weiß nicht wirklich darüber. Es tut uns leid. –