Как получить содержимое файла в форме на сервер с сокетами - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь получить содержимое файла в форме с сокетами, но когда я печатаю тело запроса, я просто получаю имя ввода и имя файла. Как сервер обрабатывает получение содержимого файла?

import socket

serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serversock.bind((socket.gethostname(), 5000))
serversock.listen(1)

while True:
    clientsock, addr = serversock.accept()
    data = clientsock.recv(4096*100).decode('utf-8')
    headers = "HTTP/1.0 200 \n\r Content-Type: text/html\n\r\n\r"
    
    if 'GET' in data:
        body = open("form.html", "r").read()
    elif 'POST' in data:
        body = data

    message = headers + body

    clientsock.send(message.encode('utf-8'))
    clientsock.close()

<form action="/" method="POST">
    <input name='imagefile' type="file">
    <input type="submit">
</form>

POST / HTTP/1.1
Host: 127.0.0.1:5000
Connection: keep-alive
Content-Length: 16
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://127.0.0.1:5000
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://127.0.0.1:5000/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

imagefile=2.jpeg
...