string::find
возвращает индекс первого символа в строке поиска .Таким образом, он дает вам индекс f
в filename=
при поиске этого.
В строке
size_t end_of_file_name = request->body.find("\"",found_file + 1);
Вам придется изменить это значение на
size_t end_of_file_name = request->body.find("\"", found_file + 9 + 1); // 9 because that's the length of "filename=" and 1 to start at the character after the "
Затем измените
std::string filename(request->body, found_file+10, end_of_file_name - found_file);
на
std::string filename(request->body, found_file + 10, end_of_file_name - (found_file + 10));
Возможно, вы захотите добавить еще одну переменную, чтобы прекратить добавление 10
все время.