Найти - Пользователи
Полная версия: xml-rpc сохранение файла
Начало » Python для экспертов » xml-rpc сохранение файла
1
niro
Странная вещь твориться.
Клиент:

import xmlrpclib

server = xmlrpclib.Server('http://localhost:8888')

fil = open('file','r')
cont = fil.read()
fil.close()
x = xmlrpclib.Binary(cont)
server.send_file(x)


Сервер:

import SimpleXMLRPCServer
import SocketServer

class SimpleThreadedXMLRPCServer(SocketServer.ThreadingMixIn, SimpleXMLRPCServer.SimpleXMLRPCServer):
pass

class Some:
def __init__(self):
pass

def send_file(self, data):
f = open('file','w')
f.write(data)
f.close()
return ‘Ok’

if __name__ == “__main__”:
server = SimpleThreadedXMLRPCServer((“localhost”, 8888))
server.register_instance(Some())
server.serve_forever()


Пытаюсь передать файл, файл передается, но не сохраняется. Перерыл уже большую часть гугла, но это не помогло - такое впечатление. что с такой проблемой просто не сталкивались ?
Андрей Светлов
С таким сервером сохраняестся. Я переделал имя файла в ofile - чтобы не перепутать.
И еще. data - объект типа Binary, его содержимое - в data.data. В этом, наверное, и была ошибка.
Еще. Следуя настоятельной рекомендации bialixa, всегда открывай файлы в режиме ‘rb’ или ‘wb’, если не знаешь твердо, почему нужно сделать иначе.


import SimpleXMLRPCServer
import SocketServer

class SimpleThreadedXMLRPCServer(SocketServer.ThreadingMixIn, SimpleXMLRPCServer.SimpleXMLRPCServer):
pass

class Some:
def __init__(self):
pass

def send_file(self, data):
f = open('ofile','wb')
f.write(data.data)
f.close()
return ‘Ok’

if __name__ == “__main__”:
server = SimpleThreadedXMLRPCServer((“localhost”, 8888))
server.register_instance(Some())
server.serve_forever()
ЗЫ. Спасибо за примерчики. Запустились сразу же без правок. Наглядно показав ошибку.
Может, со временем это станет принятой здесь практикой?
niro
Работает, Спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB