Ruby rest-загрузка файла клиента в виде данных многостраничной формы с базовой аутентификацией
Я понимаю, как сделать http-запрос, используя базовую аутентификацию с помощью Ruby's остальное-клиенте
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 ответов
как использовать 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
самый новый лучший путь может быть тем: ссылка Введите описание ссылки здесь
RestClient.post( url,
{
:transfer => {
:path => '/foo/bar',
:owner => 'that_guy',
:group => 'those_guys'
},
:upload => {
:file => File.new(path, 'rb')
}
})
вот пример с файлом и некоторыми данными 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)
API RestClient, похоже, изменился. Вот последний способ загрузки файла с помощью basic 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')
}
)