我打开了一个二进制格式的文件,并将该文件提取为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&
作为参数。
关于c++ - 如何通过套接字发送PDF文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64014902/