@miXtik789

Я делаю http сервер с нуля как сделать приём файлов?

Я делаю http сервер с нуля как сделать приём файлов? вот входящие данные:
POST /index.html HTTP/1.1
Host: 127.0.0.1
Connection: keep-alive
Content-Length: 93611
Cache-Control: max-age=0
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96", "Yandex";v="22"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: 127.0.0.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryb7zv68KmdK9Rtv4Q
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.174 YaBrowser/22.1.5.810 Yowser/2.5 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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: 127.0.0.1/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: ru,en;q=0.9

Как я понял это и есть мой файл(----WebKitFormBoundaryb7zv68KmdK9Rtv4Q) как перевести в byte[]?
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 3
@calculator212
Post запрос выглядит примерно так, где (data) это файл. Суть в том, что вы считываете значение boundary
и по этому значению ищете полезную нагрузку в которой и лежит файл. Затем парсите поля которые лежат внутри, если нужно конечно. А затем начинаете читать data и записывать файл до того момента пока не встретите закрывающую boundary.
POST / HTTP/1.1
Host: 127.0.0.1:80
Content-Length: 179
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="image"; filename="charlize.jpg"
Content-Type: image/jpeg

(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW
Ответ написан
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
То, что вы здесь привели, называется HTTP-заголовки.
Данные идут следом за заголовками. Разделитель между заголовками и данными - два перевода строки.
Длина передаваемых данных указана в заголовке "Content-Length" в байтах: 93611

Пример того, как работать с "Content-Type: multipart/*; boundary=...", можно посмотреть здесь:
https://developer.mozilla.org/en-US/docs/Web/HTTP/...

Обратите внимание, что при использовании boundary спереди добавляется "--".
Ответ написан
Комментировать
freeExec
@freeExec
Участник OpenStreetMap
string.GetBytes() но это не ваш файл. Он должен идти дальше и там Content-Length: 93611
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы