我打开了一个二进制格式的文件,并将其提取为String。之后,我尝试将其作为HTTP答复发送。最后,它看起来像这样:
ptr->Sendall((char*)"HTTP/1.1 200 OK\r\n");
ptr->Sendall((char*)"Content-Type: pdf/html\r\n");
ptr->Sendall((char*)"Content-Length: 16384\r\n");
ptr->Sendall((char*)"\r\n");
ptr->Sendall((char*)wholeString.c_str());
ptr->Sendall((char*)"\r\n\r\n");
内容长度等于String的总大小。
我在Google Chrome浏览器中出现错误:无法加载pdf文件。
根据定义,二进制文件可能包含使它们无法表示为C字符串的字符。您命中的第一个NUL字节将过早结束字符串,并且这些字符串会频繁出现在各种文件中。
std::string
可以代表这些很好。c_str()
将返回一个指向完整数据的指针,但是您必须将其视为原始缓冲区,而不是C字符串,并且还要为SendAll
类型函数提供长度。
它可能会更好,使SendAll
取要么const char*
或const std::string&
作为参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句