C ++ Как проанализировать байты файла через HTTP POST - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь создать HTTP-сервер в C ++ через Winsock2.Теперь я получаю простые запросы.

char * buffer = new char[DefaultBufferLength];
int recvResult = recv(clientSocket, buffer, DefaultBufferLength, 0);

И буфер содержит все заголовки и тело HTTP, поэтому я могу их проанализировать и отправить ответ.Но у меня проблема с загрузкой файлов.Например, у меня есть небольшой файл PNG, и я отправляю его на свой сервер через POSTMan:

screen postman request

Я понимаю, что мне нужно получить байты в теле,и сохранить его в файл на моем сервере (когда я делал это, получая json, кодируя и декодируя base64, но во многих постах я слышал, что это не лучший способ загрузки файла).Когда я пытаюсь записать байты bystream, реальные байты сохраняются.Я сделаю это следующим образом (разбор части байтов и запись в ofstream):

std::ofstream stream;
stream.open("test", std::ios::binary); 
int recvResult = recv(clientSocket, buffer, DefaultBufferLength, 0);
stream.write(buffer, recvResult);

В моем случае есть две транзакции получения

первый принятый буфер

image

второй полученный буфер

image

Но после этого я не могу открыть этот файл:

image is not defined)">

Поэтому, пожалуйста, скажите мне, что я делаю неправильно, и дайте мне соответствующую статью о отправке файлов через HTTP.

...