Загрузка файла остатка-клиента Ruby в виде многостраничных данных с базовой аутентификацией
Я понимаю, как сделать HTTP-запрос, используя базовую аутентификацию с Ruby rest-client
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')
но я не могу понять, как объединить эти два, чтобы опубликовать файл на сервере, который требует базовой проверки подлинности. Кто-нибудь знает, что лучший способ создать этот запрос?
Ответы
Ответ 1
Как насчет использования RestClient::Payload
с 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
Ответ 2
Самый новый лучший способ может заключаться в следующем:
ссылка введите ссылку здесь
RestClient.post( url,
{
:transfer => {
:path => '/foo/bar',
:owner => 'that_guy',
:group => 'those_guys'
},
:upload => {
:file => File.new(path, 'rb')
}
})
Ответ 3
Вот пример с файлом и некоторыми данными 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)
Ответ 4
API-интерфейс RestClient, похоже, изменился. Здесь последний способ загрузить файл с использованием базового auth:
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')
}
)