蜻蜓设置原始文件名

问题描述 投票:0回答:2

我正在将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时是否可以设置其他单独的文件名?

对于普通文件,蜻蜓使用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,因为它只是二进制数据。

ruby-on-rails ruby-on-rails-3 dragonfly-gem
2个回答
0
投票

我从未使用过Dragonfly,但我正在浏览它们的源代码,我认为传递名称选项可能有用。请看Github repo

def name
  meta["name"] || temp_object.original_filename
end

0
投票

[不确定您的设置是什么,但是我将模型照片和蜻蜓附件设置为图像。就我而言,它就像这样:

photo.image.meta["name"] = "new_file_name.jpg"
© www.soinside.com 2019 - 2024. All rights reserved.