Есть несколько вещей, которые могут вызвать проблему.
- Вы хотите использовать реальный объект
File
с RestClient
, поэтому используйте File.open
; он возвращает файловый объект.
- Вы дважды включаете объект изображения в свой запрос; фактическое содержание не ясно из вашего вопроса. Например, вы смешиваете элементы полезной нагрузки с заголовками. На основе подписи
RestClient.post
, которая принимает аргументы url, payload, headers={}
, ваш запрос должен иметь одну из двух следующих форм:
Ожидает ли конечная точка именованные параметры? Если да, то используйте следующее:
Метод 1: полезная нагрузка включает поле или параметр с именем "загрузка", а значение устанавливается в объект изображения.
result = RestClient.post(
'http://www.someurl.com/objects',
{ 'upload' => image },
'Accept' => 'application/json',
'Authorization' => 'token',
'Content-Type' => 'image/jpeg',
)
Ожидает ли конечная точка простую загрузку файла? Если это так, используйте:
Метод 2: объект файла изображения отправляется в качестве единственной полезной нагрузки.
result = RestClient.post(
'http://www.someurl.com/objects',
image,
'Accept' => 'application/json',
'Authorization' => 'token',
'Content-Type' => 'image/jpeg',
)
Обратите внимание, что я не включил заголовок 'Content-Length'
; это обычно не требуется при использовании RestClient
, потому что он вставляет его для вас при обработке файлов.
Существует еще один способ отправки полезной нагрузки с RestClient
объясненным ">здесь.
Не забудьте также прочитать официальную документацию на github.
Я также новичок в RestClient
, поэтому, если я ошибаюсь в этом случае, не будьте слишком строги; Я немедленно исправлю все свои заблуждения. Надеюсь это поможет!
person
Steve Benner
schedule
04.03.2014
image = File.open('uploads/images/gullfoss.jpg','rb') {|io| io.read}
- person Anand Shah   schedule 21.05.2012