У меня есть файл изображения, хранящийся на S3. Я хочу загрузить этот файл как данные формы на удаленный сайт.
Линия контроллера:
response = RestClient.post("#{BASE_URL}/processImage?language=#{LANGUAGE}&exportFormat=txt", :upload => { :file => File.new(asset.avatar.url) })
assets.avatar.url — это файл в виде скрепки, хранящийся на S3. Это здесь. Это общедоступно.
Но я продолжаю получать Errno::ENOENT (Нет такого файла или каталога) с URL-адресом... это работает!
Я, вероятно, упускаю что-то простое здесь. У кого-нибудь есть идеи?
** РЕДАКТИРОВАТЬ: РЕШЕНО **
Я использовал open-uri, а затем просто использовал open(). Он все еще загружается на сервер, но, по крайней мере, работает. И визуально выглядит проще. знак равно
Вот исправление:
require 'open-uri'
response = RestClient.post("#{BASE_URL}/processImage?language=#{LANGUAGE}&exportFormat=txt", :upload => { :file => open(asset.avatar.url) })
Open-uri является частью ruby, поэтому вам не нужно устанавливать гем (например, rest-client). Просто добавьте его в свой код.
Я думал, что мне понадобится где-то там файл .read, но похоже он прекрасно работает и без него.