在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
虽然这段代码似乎做得很好,但它可能不是很惯用。我该如何改进呢?
答案 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很好,但我还没用过。
击><击> 撞击>