Я работаю над приложением Rails для отправки файлов Word, хранящихся на Amazon S3, в convertapi для преобразования в PDF-файлы. . Я использую жемчужину скрепки для управления файлами, а curb gem, чтобы сделать фактический запрос.
# model with property has_attached_file :attachment
def convert_docx_to_pdf
base = "https://do.convertapi.com/Word2Pdf"
api_key = '*****'
file = open(attachment.url)
c = Curl::Easy.new(base)
c.multipart_form_post = true
c.http_post(
Curl::PostField.file('thing[file]', file.path),
Curl::PostField.content('ApiKey', api_key)
)
end
Я пытаюсь следовать документации для curb здесь.
Когда я запускаю это из консоли rails, он просто возвращает true
. Я хотел бы захватить полученный PDF.
(Я убедился, что это работает, если я загружаю файл вручную с помощью инструмента тестирования конечной точки от convertapi. .)
ОБНОВЛЕНИЕ 18.09.15
Я реализовал изменения, предложенные Йонасом. Вот новый код:
def convert_docx_to_pdf
base = "https://do.convertapi.com/Word2Pdf"
api_key = ENV['CONVERTAPI_API_KEY']
file = open(attachment.url)
Curl::Easy.new('https://do.convertapi.com/Word2Pdf') do |curl|
curl.multipart_form_post = true
curl.http_post(Curl::PostField.content('ApiKey', api_key), Curl::PostField.file('File', file.path))
return curl.body_str
end
end
Все еще не повезло, curl.body_str
возвращает только "Bad Request"
.
(file.path = /var/folders/33/nzmm899s4jg21mzljmf9557c0000gn/T/open-uri20150918-13136-11z00lk
)
attachment.url
- это просто строка. API ожидает файловый объект, и именно здесь появляетсяfile = open(attachment.url)
. - person lostphilosopher   schedule 21.09.2015