在Ruby中处理二进制数据的最佳实践?

时间:2010-04-16 07:56:44

标签: ruby

在Ruby中读取和写入二进制数据的最佳实践是什么?

在下面的代码示例中,我需要使用HTTP发送二进制文件(作为POST数据):

class SimpleHandler < Mongrel::HttpHandler
  def process(request, response)
    response.start(200) do |head,out|
      head["Content-Type"] = "application/ocsp-responder"
      f = File.new("resp.der", "r")
      begin
        while true
          out.syswrite(f.sysread(1))
        end
      rescue EOFError => err
        puts "Sent response."
      end
    end
  end
end

虽然这段代码似乎做得很好,但它可能不是很惯用。我该如何改进呢?

1 个答案:

答案 0 :(得分:3)

然后FileUtils copy_stream可能会有用。

require 'fileutils'
fin = File.new('svarttag.jpg')
fout = File.new('blacktrain.jpg','w')
FileUtils.copy_stream(fin,fout)
fin.close
fout.close

也许不完全是你要求的,但如果它是你要解决的整个HTTP POST文件问题,那么HTTPClient可以为你做到:

require 'httpclient'    
HTTPClient.post 'http://nl.netlog.com/test', { :file => File.new('resp.der') }

我也听说Nick Siegers multipart-post很好,但我还没用过。

<击>