0

PUTリクエストを介してサーバーにRESTAPIを使用して添付ファイルをアップロードしようとしています。これは、バイナリファイルをリクエストの本文に入れることで実行できますが、このファイルを、ペーパークリップを使用して添付ファイルを保存するモデルの添付ファイルとして保存したいと思います。

これが私の現在の関連するクラス定義です:

class Cl < ActiveRecord::Base
  after_update :save_tses
  validates_associated :tses

  has_many :tses

  ...truncated...

  def save_tses
    tses.each do |ts|
      ts.save(false)
    end
  end

end

class Ts < ActiveRecord::Base
  has_attached_file :tsa, :styles => { :thumb => {:geometry => "100x141>", :format => :jpg} }, 
    :path => ":rails_root/public/system/:attachment/:id/:style/:friendly_filename",
    :url => "/system/:attachment/:id/:style/:friendly_filename"

  belongs_to :cl

  def friendly_filename
    "#{self.tsa_file_name.gsub( /[^a-zA-Z0-9_\.]/, '_')}" 
  end
end

HTMLページのファイルアップロードを使用して、添付ファイルを問題なく保存できます。PUTリクエストを介してファイルをバイナリデータとして受信するコントローラーでこれを実行したいと思います。

助言がありますか?

4

2 に答える 2

1

また、使用することができます
-https://github.com/jwagener/httmultiparty

于 2012-06-29T05:53:33.313 に答える
0

とった、

# controller.rb

def add_ts
  # params[:id]
  # params[:tsa]

  @cl = Cl.find(params[:id])
  ts = @cl.tses.build(:name => "#{@cl.name}_#{Time.now.to_i}")

  ts.tsa = params[:tsa]
  if ts.save
    render :json => {:status => "OK"}
  else
    render :json => {:status => "ERROR"}
  end
end

# Test

curl -F "tsa=@file.pdf" "http://host/cl/474/add_ts"
=> {"status":"OK"}
于 2012-06-28T10:23:28.197 に答える