0

我正在尝试通过 PUT 请求在我的服务器上使用 REST API 上传附件。我可以通过将二进制文件放在请求正文中来做到这一点,但我还想将此文件保存为使用回形针保存附件的模型的附件。

这是我当前涉及的类定义:

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 回答