Форум сайта python.su
Странная вещь твориться.
Клиент:
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()
ЗЫ. Спасибо за примерчики. Запустились сразу же без правок. Наглядно показав ошибку.
Может, со временем это станет принятой здесь практикой?
Офлайн
Работает, Спасибо
Офлайн