我正在使用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
,因为它只是二进制数据。
答案 0 :(得分:0)
我从未使用过Dragonfly,但我正在浏览他们的源代码,我认为传递名称选项可能会有效。请查看Github repo
def name
meta["name"] || temp_object.original_filename
end
答案 1 :(得分:0)
不知道您的设置是什么,但是我将模型照片和蜻蜓附件设置为图像。就我而言,它就像这样:
photo.image.meta["name"] = "new_file_name.jpg"
答案 2 :(得分:0)
在使用DragonFly的Model类中,为图像添加访问器:
dragonfly_accessor :image do
storage_options{|attachment| {path: "<somehow generate your path>"}
end