Does anyone have some sample code showing how to send a file via XML RPC?
Sending string values is easy ... like the below example...
server = XMLRPC::Client.new2("http://rpc.technorati.com/rpc/ping")
result = server.call("weblogUpdates.ping", "Copenhagen.rb",
"http://www.copenhagenrb.dk/
.... but how would one send a file?
Etienne
lists
(lists)
2
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
···
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?
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 <lists@kalama.no-ip.org> 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