【问题标题】:Dragonfly set original filename蜻蜓设置原始文件名
【发布时间】:2015-02-10 10:30:09
【问题描述】:

我正在使用 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,因为它只是二进制数据。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 dragonfly-gem


    【解决方案1】:

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

    photo.image.meta["name"] = "new_file_name.jpg"
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 由于我用于设置纯数据,因此无法正常工作。请注意我尝试过的编辑 1。
      【解决方案3】:

      在您使用 DragonFly 的模型类中,为您的图像添加一个访问器:

      dragonfly_accessor :image do
        storage_options{|attachment| {path: "<somehow generate your path>"}
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多