2012-07-09 15 views
10

Tôi hiểu làm thế nào để thực hiện một yêu cầu http sử dụng xác thực cơ bản với Ruby rest-clientcủa Ruby tập tin còn lại-client upload dưới dạng dữ liệu dạng nhiều phần dữ liệu với authenticaion cơ bản

response = RestClient::Request.new(:method => :get, :url => @base_url + path, :user => @sid, :password => @token).execute 

và làm thế nào để gửi một tập tin dưới dạng dữ liệu dưới dạng nhiều phần dữ liệu

RestClient.post '/data', :myfile => File.new("/path/to/image.jpg", 'rb') 

nhưng tôi dường như không thể tìm ra cách kết hợp hai để đăng tệp lên máy chủ yêu cầu xác thực cơ bản. Có ai biết cách tốt nhất để tạo yêu cầu này là gì?

+1

trên ghi chú không liên quan: bạn nên chấp nhận câu trả lời khác, thực hành tốt ... – robustus

Trả lời

20

Làm thế nào về việc sử dụng một RestClient::Payload với RestClient::Request ... Đối với một ví dụ:

request = RestClient::Request.new(
      :method => :post, 
      :url => '/data', 
      :user => @sid, 
      :password => @token, 
      :payload => { 
      :multipart => true, 
      :file => File.new("/path/to/image.jpg", 'rb') 
      })  
response = request.execute 
0

Cách tốt nhất mới nhất có thể là: liên kết là enter link description here

RestClient.post(url, 
    { 
    :transfer => { 
     :path => '/foo/bar', 
     :owner => 'that_guy', 
     :group => 'those_guys' 
    }, 
    :upload => { 
     :file => File.new(path, 'rb') 
    } 
    }) 
0

Dưới đây là một ví dụ với một tệp và một số dữ liệu json:

require 'rest-client' 

payload = { 
    :multipart => true, 
    :file => File.new('/path/to/file', 'rb'), 
    :data => {foo: {bar: true}}.to_json 
     } 

r = RestClient.post(url, payload, :authorization => token) 
0

API RestClient dường như đã thay đổi. Dưới đây là cách mới nhất để tải lên tệp bằng auth cơ bản:

response = RestClient::Request.execute(
    method: :post, 
    url: url, 
    user: 'username', 
    password: 'password', 
    timeout: 600, # Optional 
    payload: { 
    multipart: true, 
    file: File.new('/path/to/file, 'rb') 
    } 
) 
Các vấn đề liên quan