質問

私は自分のアプリケーションで添付ファイルのクリップを使用しています。私は、古いデータの束のためのインポートスクリプトを書いているが、私は、ディスク上のファイルからクリップオブジェクトを作成する方法がわかりません。私の最初の推測では、モックCGIマルチパートオブジェクトを作成することですが、それは粗溶液のビットのように思える、と私の最初の試みは、私はto_tempfile方法権を取得していないので、私が思うに、失敗します。

これを行うための正しい方法はありますか?それはかなり簡単なはずの何かのように思える。

役に立ちましたか?

解決

私は、私は同じことをやったことを知っている、と私はちょうど各ファイルへのパスからFileオブジェクトを作成し、画像属性にそれを割り当てられていることを信じています。クリップは、そのファイル上で実行されます。

thing.image = File.new("/path/to/file.png")
thing.save

他のヒント

このローカルファイルのための素晴らしい作品が、それは、リモートのファイルに対して同様に動作しません。私は、画像をアップロードするためのクリップを使用してアプリを持っています。これらの画像は、Amazon S3に保存されてきています。

:とにかく、私はインポートするために必要ないくつかの古いデータを持っていたので、私は次のことを試してみました
thing.image = open('http://www.someurl.com/path/to/image.jpg')
thing.save

ファイルが小さい場合は(たとえば、10K未満)は、その後openuriはStringIOオブジェクトを返し、私のファイルはstringio.txtとしてS3に保存されているになるだろう。

ファイルは、一時ファイルオブジェクトを返すopenuriその後、周り10Kよりも大きい場合。しかし、S3上のファイル名が一意なってしまうが、本当にimage.jpgの元のファイル名

に関連していません

私は次の操作を行って問題を解決することができました。

remote_photo = open('http://www.someurl.com/path/to/image.jpg')
def remote_photo.original_filename;base_uri.path.split('/').last; end   
thing.image = remote_photo
thing.save
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top