Я пытаюсь создать HTTP-сервер в C ++ через Winsock2.Теперь я получаю простые запросы.
char * buffer = new char[DefaultBufferLength];
int recvResult = recv(clientSocket, buffer, DefaultBufferLength, 0);
И буфер содержит все заголовки и тело HTTP, поэтому я могу их проанализировать и отправить ответ.Но у меня проблема с загрузкой файлов.Например, у меня есть небольшой файл PNG, и я отправляю его на свой сервер через POSTMan:
Я понимаю, что мне нужно получить байты в теле,и сохранить его в файл на моем сервере (когда я делал это, получая json, кодируя и декодируя base64, но во многих постах я слышал, что это не лучший способ загрузки файла).Когда я пытаюсь записать байты bystream, реальные байты сохраняются.Я сделаю это следующим образом (разбор части байтов и запись в ofstream):
std::ofstream stream;
stream.open("test", std::ios::binary);
int recvResult = recv(clientSocket, buffer, DefaultBufferLength, 0);
stream.write(buffer, recvResult);
В моем случае есть две транзакции получения
первый принятый буфер
второй полученный буфер
Но после этого я не могу открыть этот файл:
is not defined)">
Поэтому, пожалуйста, скажите мне, что я делаю неправильно, и дайте мне соответствующую статью о отправке файлов через HTTP.