ruby - 用葡萄和回形针上传文件

标签 ruby ruby-on-rails-3 api paperclip

我正在开发 REST API,尝试上传用户图片:

  • grape微框架
  • paperclip gem 但它不工作,显示此错误
  • rails 版本是 3.2.8

No handler found for #<Hashie::Mash filename="user.png" head="Content-Disposition: form-data; name=\"picture\"; filename=\"user.png\"\r\nContent-Type: image/png\r\n" name="picture" tempfile=#<File:/var/folders/7g/b_rgx2c909vf8dpk2v00r7r80000gn/T/RackMultipart20121228-52105-43ered> type="image/png">

我尝试用 Controller 测试回形针并且它有效但是当我尝试通过 grape api 上传时它不起作用我的帖子标题是 multipart/form-data

我的上传代码是这样的

 user = User.find(20) 
 user.picture = params[:picture] 
 user.save! 

如果不能通过 grape 上传文件,有没有其他方法可以通过 REST api 上传文件?

最佳答案

@ahmad-sherif 解决方案有效,但您丢失了 original_filename(和扩展名)并且可以为问题提供预处理器和验证器。您可以像这样使用 ActionDispatch::Http::UploadedFile:

  desc "Update image"
  params do
    requires :id, :type => String, :desc => "ID."
    requires :image, :type => Rack::Multipart::UploadedFile, :desc => "Image file."
  end
  post :image do
    new_file = ActionDispatch::Http::UploadedFile.new(params[:image])
    object = SomeObject.find(params[:id])
    object.image = new_file
    object.save
  end

关于ruby - 用葡萄和回形针上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14067163/

相关文章:

ruby - 了解 ruby​​ 代码(斐波那契)

ruby-on-rails-3 - 使用 RVM 在 ubuntu 上设置 Aptana Studio 3

ruby-on-rails-3 - Rails 3-如何处理从数据库获取的数据

php - 网站管理员工具 API 和 PHP

javascript - 我正在尝试从 React 中的对象(API)中提取数据

ruby - 如何 rb_protect ruby​​ 中的所有内容

ruby - 像 sh -x 一样回显每个 Ruby 代码行?

ruby-on-rails - 无法安装 mysql2 gem ...( Homebrew 软件上的附带内容也是如此)

ios - 带标题的 Alamofire 请求?

ruby - 在 Ruby 中循环主集、处理每个子集的最干净的方法