У меня есть файл изображения, хранящийся на S3. Я хочу загрузить этот файл как данные формы на удаленный сайт.
Линия контроллера:
response = RestClient.post("#{BASE_URL}/processImage?language=#{LANGUAGE}&exportFormat=txt", :upload => { :file => File.new(asset.avatar.url) })
Asset.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, но кажется , он отлично работает и без него.
1 ответ
Вам необходимо загрузить файл / содержимое, прежде чем размещать его с помощью RestClient. File.new принимает в качестве аргумента путь к файлу, а не URL-адрес.
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.