【问题标题】:Ruby on Rails: REST API + file upload + paperclipRuby on Rails:REST API + 文件上传 + 回形针
【发布时间】:2012-06-29 19:12:04
【问题描述】:

我正在尝试通过 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 请求将文件作为二进制数据接收的控制器上执行此操作。

有什么建议吗?

【问题讨论】:

    标签: ruby-on-rails ruby api rest paperclip


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      知道了,

      # 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"}
      

      【讨论】:

        猜你喜欢
        • 2014-01-31
        • 1970-01-01
        • 2017-01-14
        • 1970-01-01
        • 1970-01-01
        • 2015-11-14
        • 2015-06-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多