Вопросы о сервере загрузки HTML-файлов

Я пытаюсь получить веб-страницу для загрузки файла на встроенный сервер. Некоторый поиск в Google показал мне, как сделать веб-страницу с помощью средства выбора файлов, и это работает просто отлично.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу заставить браузер отправлять что-либо, кроме первого пакета POST, который дает имя файла и, глядя на данные TCP, первые несколько байтов файлов, которые он отправляет. Однако, несмотря на то, что я пытался завершить HTTP OK и HTTP No data return, из браузера больше не поступают данные.

Я использовал этот HTML:

<form action='' method='POST' enctype='multipart/form-data'> \
    <input type='file' name='userFile'><br> \
    <input type='submit' name='upload_btn' value='upload'> \
</form>

Это, конечно же, отправляет пакет TCP POST с загрузкой информации, такой как имя файла =, тип кодировки и, в конечном итоге, то, что выглядит как первые несколько строк самого файла.

Именно то, что я пытался вернуть встроенному серверу, это:

"HTTP/1.1 200 OK\r\nТип содержимого: текст/html\r\n\r\n"

Or

"HTTP/1.1 204 Нет содержимого\r\n"

Ни один из них не убеждает браузер отправить следующий фрагмент файла на сервер. Может кто-нибудь посоветовать, что я делаю неправильно, пожалуйста?

Большое спасибо.


person DiBosco    schedule 13.02.2015    source источник


Ответы (1)


Ах, чтобы ответить на мой собственный вопрос, в маловероятной надежде, что это поможет кому-то еще, проблема заключалась в том, что я закрывал соединение. Я забыл, что это не обычная транзакция, когда вы отправляете информацию, а затем закрываете сокет. Если я держу сокет открытым и просто продолжаю слушать, что приходит, браузер продолжает отправлять остальную часть файла. Я думаю, что важно точно отслеживать, что приходит, размер отправляемого файла, а затем закрывать сокет после получения всей этой информации.

person DiBosco    schedule 13.02.2015