0

ファイルのアップロードを保存するために、Dragonfly で Dropbox を使用しています。

次のコードがあります。

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ただ、バイナリデータなので設定できません。

4

3 に答える 3

0

私は Dragonfly を使用したことはありませんが、そのソース コードを調べていて、name オプションを渡すとうまくいくと思います。Github レポジトリをご覧ください

def name
  meta["name"] || temp_object.original_filename
end
于 2015-02-10T19:18:47.473 に答える