如何使用ruby发布(http-post)pdf的内容?

时间:2014-12-22 18:50:01

标签: ruby pdf file-io http-post curb

我正在尝试使用以下块

在ruby中发布(原始)PDF的内容
require 'pdf/reader'
require 'curb'

reader = PDF::Reader.new('folder/file.pdf')
raw_string = ''
reader.pages.each do |page|
  raw_string = raw_string + page.raw_content.to_s
end
c = Curl::Easy.new('http://0.0.0.0:4567/pdf_upload')
c.http_post(Curl::PostField.content('param1', 'value1'),Curl::PostField.content('param2', 'value2'), c.http_post(Curl::PostField.content('body', raw_string)))

API实现params[:body]内部似乎一直都是空的(尽管puts raw_string确认变量具有所有值。

另外,有更好的方式发布pdf内容吗?

1 个答案:

答案 0 :(得分:0)

关于您如何构建raw_string ...

而不是:

reader.pages.each do |page|
  raw_string = raw_string + page.raw_content.to_s
end

您应该可以执行以下某项操作:

raw_string = reader.pages.map(&:raw_content).join
raw_string = reader.pages.map{ |p| p.raw_content.to_s }.join

为了清晰和可读性,我还建议您将最后一行分布在多行中:

c.http_post(
  Curl::PostField.content('param1', 'value1'),
  Curl::PostField.content('param2', 'value2'), 
  c.http_post(Curl::PostField.content('body', raw_string))
)