2013-05-28 1 views
0

В настоящее время я пишу серверно-клиентское приложение, которому необходимо перенести какой-либо файл на работу. Я использую этот метод:Отправка файла с сервера на клиент (python)

клиент:

file_to_send = raw_input(">") 

try: 
    f = open("./sent_files/" + file_to_send, "rb") 
except IOError, e: 
    print ">error: ", e 
    break 

data = xmlrpclib.Binary(f.read()) 

if s.receive_file(file_to_send, data): 
    print ">file correctly sent" 

сервер:

def receive_file(self, name, arg):           
    with open("./sampletest/"+name, "wb") as handle: 
     handle.write(arg.data) 

Но как я могу сделать наоборот (я имею в виду отправки файла с сервера клиенту)?

+0

Это кажется, что клиент и сервер работает на том же машина, и вы просто вызываете функцию сервера в клиентском коде. – Roger

ответ

5

Просто написать функцию на сервере так:

def send_file(self, name): 
    with open('./sampletest/' + name, 'rb') as handle: 
    return handle.read() 

и называем это на клиента:

data = send_file(fileName) 
with open('./received_files/' + fileName, 'wb') as handle: 
    handle.write(data) 
+0

Спасибо, он сработал :) – ste

+0

Добро пожаловать в Stackoverflow! Если ответ решает вашу проблему, примите его (нажмите на галочку слева). Независимо от этого, если ответ кажется вам полезным, пожалуйста, воздержитесь от него (уклоняется от него вверх стрелка). Это повысит репутацию ответчика. – Alfe