葡萄 - 文件上传 - 参数声明

时间:2015-11-08 05:41:04

标签: ruby-on-rails carrierwave grape grape-api

我正在使用Grape编写我的第一个API,我非常兴奋,听起来很棒。通过笔记,我找不到声明文件参数的方法。

以下是正在进行的课程,用于提供个人资料详细信息,更新个人资料详情和上传个人资料图片。我得到了这个params do; end块来定义必需的字段,并且也希望对文件上传这样做。但是那种类型会是什么?

试图在网上找到一个例子,我遇到的少数人没有使用它。可能是微不足道的愚蠢问题,但我发现很难找到它。

更新:文件上传它自己使用Carrier-wave和一个名为ProfilePictureUploader的上传者,但我怀疑是这种情况。

class AccountApi < Grape::API

  resource :account do

    desc 'View the current user profile'
    get :profile do
      present current_user, with: Presenters::UserPresenter
    end

    desc 'Update the current user profile'
    params do
      requires :email,      type: String,   desc: 'User email'
      requires :first_name, type: String,   desc: 'First name'
      requires :last_name,  type: String,   desc: 'Last name'
      requires :phone,      type: String,   desc: 'Phone number'
      requires :school_id,  type: Integer,  desc: 'School ID'
    end
    put :profile do
    end

    desc 'Upload profile picture'
    # params do
    #   requires :user, type: Hash do
    #     requires :profile_picture, type: <<??????>>, desc: 'User profile picture'
    #   end
    # end
    post :profile_picture do
      profile_picture = params[:user][:profile_picture]

      status = current_user.update(profile_picture: profile_picture)

      {
        status: status,
        size: profile_picture[:tempfile].size,
      }
    end

  end

end

提前感谢您的支持。那里过得愉快。

1 个答案:

答案 0 :(得分:3)

我认为您要找的类型是Rack::Multipart::UploadedFileFile

params do
   requires :user, type: Hash do
     requires :profile_picture, type: Rack::Multipart::UploadedFile, desc: 'User profile picture'
   end
 end

这是grape支持的here类型。