From: e deleflie Date: 2008-04-16T23:10:37+09:00 Subject: Re: How to send a file via XML RPC bingo! .... .... just needed to encode the binary data into base64 before sending it (and do the reverse at the server end). thanks Etienne On Wed, Apr 16, 2008 at 10:31 PM, lists wrote: > On Apr 15, 2008, at 6:56 PM, e deleflie wrote: > > > Does anyone have some sample code showing how to send a file via XML RPC? > > > > I can't remember where I first saw this. > > $ cat client.rb > #!/usr/bin/ruby > > require 'xmlrpc/client' > require 'base64' > > data = IO.read('/tmp/test.jpg') > encoded_file = Base64.encode64(data) > > server = XMLRPC::Client.new3({'host'=>'localhost', 'port'=>8888, > 'timeout'=>30}) > > if server.call("put_file", encoded_file) > puts "ok" > end > puts result > > $ cat server.rb > #!/usr/bin/ruby > > $SAFE = 1 > > require "xmlrpc/server" > require 'base64' > > s = XMLRPC::Server.new(8888) > s.add_handler("put_file") { |encoded_file| > Dir.chdir('/tmp/test') > File.open('test.jpg', 'w+') { |file| > file.puts( Base64.decode64(encoded_file) ) > } > true > } > > s.serve > > > >