The problem is that xmlrpc only works for small files because needs to serialize in XML. It would break for large files. The propotocol is not designed for streaming.
On Feb 15, 6:25 am, António Ramos <[email protected]> wrote: > I have something working with xmlrpc > In web2py i have this service! > > @service.xmlrpc > def getFile(file,name): > db(db.files.id>0).delete() > lixo = glob.glob(os.path.join(request.folder,'uploads','*.txt')) > for f in lixo: # i delete all files in the folder then i receive the new > one > os.remove(f) > filedata=cStringIO.StringIO(file.data) > file=db.files.file.store(filedata,name) > db.files.insert(file=file) > return "Import - OK" > > Then i have a script outside web2py with this code. > This code gets a csv file from an email i receive everyday in my inbox and > sends it to my web2py server. > Just notice the bold lines. The rest is Lotus Notes specific... > > import xmlrpclib > import win32com.client > import sys > import time > filebin=None > session = win32com.client.Dispatch('Lotus.NotesSession') > session.Initialize('mypassword') > db = session.GetDatabase('SIGMA','mail/mymailbox.nsf') > view = db.GetView('CYGSA') > doc = view.GetFirstDocument() > try: > body=doc.GetFirstItem('Body') > file=doc.GetAttachment("LCOBROS.csv") > file.ExtractFile("c:\\LCOBROS.txt") > *server = xmlrpclib.ServerProxy('http://10.0.0.100/ERP/default/call/xmlrpc') > * > filepath='c:\\' > filename='LCOBROS.txt' > *filebin = xmlrpclib.Binary(open(filepath+filename).read())* > print server.getFile(filebin,filename) > doc.remove(False) # i delete the email with that attachment > except: > pass > > 2012/2/15 Ross Peoples <[email protected]> > > > > > > > > > I've never tried before, but traditionally, you would encode the binary > > file into a base64 string, then decode it on the other end. I don't know if > > JSONRPC does this for you, or has a better way.

