Open Chrys4lisfag opened 1 year ago
I am trying to upload files to restsdk http server in multipart payload. When I check received buffer I see modified payload.
Sending using cpr library
cpr::File config1{"test.exe"}; cpr::File config2{"config2.json"}; cpr::Multipart mult{{"test.exe", config1}, { "config2.json", config2 }}; const cpr::Url uri = std::string( "http://127.0.0.1:8181" ) + "/upload_scripts_config"; cpr::PostCallback( []( const cpr::Response& r ) { ... }, uri, mult );
Recv on server
pplx::task<void> handle_upload_scripts_config( web::http::http_request req ) { try { Concurrency::streams::container_buffer<std::vector<uint8_t>> buffer; req.body().read_to_end( buffer ).get(); std::ofstream f( "bin.bin"); f.write( (char*)buffer.collection().data(), buffer.collection().size()); ... } ... }
Lets compare text.exe hex bytes to received payload (the part from MZ header start) Received - Left. Original - Right
As we see, all the \r (Carriage Return) symbols are removed in recv buffer.
I tested the same thing with resinio lib and I get valid buffer
router->http_post( "/upload_scripts_config", []( restinio::request_handle_t req, auto ) { const auto body = req->body(); std::ofstream file_stream( "bin.bin", std::ios::binary); file_stream.write( body.data(), body.size()); return req->create_response().connection_close().done(); } );
How should I deal with it?
I am trying to upload files to restsdk http server in multipart payload. When I check received buffer I see modified payload.
Sending using cpr library
Recv on server
Lets compare text.exe hex bytes to received payload (the part from MZ header start) Received - Left. Original - Right
As we see, all the \r (Carriage Return) symbols are removed in recv buffer.
I tested the same thing with resinio lib and I get valid buffer
How should I deal with it?