12

我了解如何使用 Ruby 的rest-client的基本身份验证来发出 http 请求

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

以及如何将文件作为多部分表单数据发布

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

但我似乎无法弄清楚如何将两者结合起来,以便将文件发布到需要基本身份验证的服务器。有谁知道创建此请求的最佳方法是什么?

4

4 回答 4

28

使用RestClient::Payloadwith RestClient::Request... 例如:

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
于 2012-07-09T11:20:02.433 回答
3

RestClient API 似乎发生了变化。这是使用基本身份验证上传文件的最新方法:

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')
  }
)
于 2017-09-23T02:30:59.580 回答
1

最新最好的方法可能是:链接是在此处输入链接描述

  RestClient.post( url,
  {
    :transfer => {
      :path => '/foo/bar',
      :owner => 'that_guy',
      :group => 'those_guys'
    },
     :upload => {
      :file => File.new(path, 'rb')
    }
  })
于 2015-09-16T07:20:06.463 回答
1

这是一个包含文件和一些 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)
于 2017-04-20T18:20:21.310 回答