Railsとペーパークリップで古いデータをインポートします
-
16-09-2019 - |
質問
私は自分のアプリケーションで添付ファイルのクリップを使用しています。私は、古いデータの束のためのインポートスクリプトを書いているが、私は、ディスク上のファイルからクリップオブジェクトを作成する方法がわかりません。私の最初の推測では、モック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
所属していません StackOverflow