[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

How to send a file via XML RPC

e deleflie

4/15/2008 11:57:00 PM

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/...)
result = server.call("weblogUpdates.ping", "Copenhagen.rb",
"http://www.copenh...

.... but how would one send a file?

Etienne

2 Answers

lists

4/16/2008 12:31:00 PM

0

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



e deleflie

4/16/2008 2:11:00 PM

0

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
>
>
>
>