2015-11-08 60 views
2

我正在用葡萄編寫我的第一個API,我非常興奮,它聽起來感覺非常好。通過筆記運行我無法找到爲文件聲明參數的方法。葡萄 - 文件上傳 - 參數聲明

下面是一個提供個人資料詳細信息,更新個人資料詳情和上傳個人資料圖像的未完成課程。我得到這個params do; end塊來定義必需的字段,並希望爲文件上傳做這樣的工作。但是這種類型會是什麼?

試圖在網上找到一個例子,我遇到的幾個沒有使用它。可能是一個微不足道和愚蠢的問題,但我發現很難找到它。

更新:文件上傳自己使用載波和上傳器叫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 

在此先感謝您的支持。那裏有美好的一天。

回答

3

我認爲你正在尋找的類型是Rack::Multipart::UploadedFile或只是File

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

這是一個grape支持的類型爲here

+0

我需要一副眼鏡。有些東西一定是錯誤的,我的目光不會在文檔中看到該部分。謝謝! –