Я пытаюсь создать клиентскую часть, которая может отправлять изображение на сервер с помощью запроса POST, и сервер должен сохранить его. Моя проблема в том, что когда я отправляю запрос со всеми заголовками, он декодируется как 'utf-8', и все '\ r \ n', которые должны разделять заголовок, теперь \\ r \\ n, а не так, как должно быть. Чтобы решить эту проблему, я расшифровал его как 'string_escape', и это сработало. но теперь, когда я пытаюсь добавить двоичное содержимое файла изображения, возникает ошибка, что '\ x' не является допустимым escape, поэтому я удалил декодирование и использовал 3 кавычки для строки, но теперь возникает ошибка, которую он не можетсоедините байты и строки, мне нужна идея, как решить эту проблему с помощью пакета сокетов (а не запросов и т. д.)
спасибо !!
import os
while True:
my_socket = socket.socket()
my_socket.connect(('127.0.0.1', 8820))
header = 'POST /upload HTTP/1.1\r\n'
while True:
name = input('what to send ? ')
if os.path.isfile(name):
check = input('Do you want send ' + name + '(y/n) : ')
if check == 'y':
break
if os.path.isdir(name):
os.chdir(name)
if name == 'ls':
for i in os.listdir('.'):
print(i)
# after knowing which file to send
# try to send it but ...
# there is a problem
file_name = os.path.split(name)[-1]
content = ''
with open(name, 'rb') as f:
content = f.read()
header += 'file-name:' + file_name + '\r\n\r\n'
header = f"""POST /upload HTTP/1.1
file-name:{file_name}
"""
header +=content
my_socket.send(header)
data = my_socket.recv(1024)
print('you got this from server\t\t ' + data)
my_socket.close()
вот код