【发布时间】:2017-02-28 18:58:43
【问题描述】:
我正在尝试通过套接字将所有类型的文件发送到 C++ 中的浏览器。我可以通过套接字很好地发送 .txt 和 .html 文件,但是当我尝试发送 jpeg 时,我收到错误 The image "localhost:8199/img.jpg" cannot be displayed because it contains errors。我不确定为什么我的程序可以正常发送文本文件但无法处理图像。这就是我读取文件并将其写入客户端的方式:
int fileLength = read(in, buf, BUFSIZE);
buf[fileLength] = 0;
char *fileContents = buf;
while (fileLength > 0) {
string msg = "HTTP/1.0 200 OK\r\nContent-Type:" + fileExt + "\r\n\r\n\r\nHere is response data";
int bytes_written;
if(vrsn == "1.1" || vrsn == "1.0"){
write(fd, msg.c_str(), strlen(msg.c_str()));
bytes_written = write(fd, fileContents, fileLength);
} else {
bytes_written = write(fd, fileContents, fileLength);
}
fileLength -= bytes_written;
fileContents += bytes_written;
}
完整代码在这里:http://pastebin.com/vU9N0gRi
如果我在浏览器网络控制台中检查响应标头,我会看到 Content-Type 是 image/jpeg,所以我不确定我做错了什么。
图像文件的处理方式是否与普通文本文件不同?如果是这样,我究竟需要做什么才能处理将图像文件发送到浏览器?
【问题讨论】:
-
标头损坏和长度错误(图像不是字符串)。