3

ここにコントローラーがあります

require 'open-uri'

user = User.new
url = "some_remote_image.jpg" #remote image WITH extension
user.image = open(url)
user.save

モデル

has_attached_file :image,
  :styles => { :thumb => "25x25>", :large => "1000x1000>" }, 
  :path => ":rails_root/images/users/:id/:style/:hash.:extension",
  :url => "/images/users/:id/:style/:hash.:extension",
:hash_secret => "hash string"

これは機能しますが、画像は拡張子なしで保存されます。"some_remote_image." 投稿フォームで画像をアップロードする場合は、すべて拡張子を付けてアップロードします。よくわかりません。

4

2 に答える 2

4

Paperclip を最新の github バージョンに更新し、 user.image = open(url) の代わりにこのように画像を設定することで解決しました

user.image = URI.parse(url)
于 2012-07-26T13:49:13.800 に答える
3

誰かが逆のことをしたい場合 - 拡張子のないファイルに拡張子を追加

  def besfore_save
    tempfile = data.queued_for_write[:original]
    unless tempfile.nil?
      extension = File.extname(tempfile.original_filename)
      if !extension || extension == ''
        mime = tempfile.content_type
        ext = Rack::Mime::MIME_TYPES.invert[mime]
        self.data.instance_write :file_name, "#{tempfile.original_filename}#{ext}"
      end
    end

    true
  end
于 2015-10-10T01:28:46.583 に答える