Стрекоза устанавливает оригинальное имя файла

Я использую Dropbox с Dragonfly для хранения загруженных файлов.

У меня есть следующий код:

if hash[:file_dropbox].present? #DROPBOX
    path = "Attachments/" + Time.now.strftime("%d%m%Y_%H%M") + "_" + rand(1000).to_s + "_" + File.basename(hash[:file_dropbox])
    data = open(hash[:file_dropbox]) { |f| f.read }
    file["file"] = Dragonfly[:images].store(data, path: path)
end

Проблема:

Dragonfly использует имя файла, которое я использую для пути, в качестве имени для хранения. Можно ли установить другое отдельное имя файла при использовании Dragonfly.store?

С обычными файлами Dragonfly использует original_filename, но я не могу установить это через Dragonfly.store.

Какие-либо предложения?

EDIT1:

Я пробовал следующее:

file["file"] = Dragonfly[:images].store(data, path: path,
        original_filename: "hello.docx")

file["original_filename"] = File.basename(hash[:file_dropbox])

При использовании обычной загрузки файлов можно установить original_filename. Но я не могу установить data.original_filename, потому что это просто двоичные данные.


person FastSolutions    schedule 10.02.2015    source источник


Ответы (3)


Я никогда не использовал Dragonfly, но я просматривал их исходный код и думаю, что передача имени может сработать. Пожалуйста, взгляните на Репозиторий на Github

def name
  meta["name"] || temp_object.original_filename
end
person Abu Nashir    schedule 10.02.2015
comment
На самом деле не работает, так как я использую для установки простых данных. Пожалуйста, обратите внимание на редактирование 1 для того, что я пробовал. - person FastSolutions; 17.02.2015

Не уверен, что у вас за установка, но у меня есть фотография модели, а вложение стрекозы установлено как изображение. В моем случае это работает так:

photo.image.meta["name"] = "new_file_name.jpg"
person urbanczykd    schedule 28.03.2020

В вашем классе Model, использующем DragonFly, добавьте аксессор для вашего изображения:

dragonfly_accessor :image do
  storage_options{|attachment| {path: "<somehow generate your path>"}
end
person Ortwin Gentz    schedule 18.06.2020