ソケットを介してすべてのタイプのファイルをC++でブラウザに送信しようとしています。私は送ることができます。 txt
と.html
ファイルはソケットで正常ですが、jpegを送信しようとするとエラーThe image "localhost:8199/img.jpg" cannot be displayed because it contains errors
が表示されます。なぜ私のプログラムはテキストファイルを送信するのにうまくいくのか分かりませんが、画像は扱えません。これは私がファイルを読み込み、クライアントにそれを書く方法です:C++でソケットを介して画像を送信すると「画像を表示できません」
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
であることがわかり私は何が間違っているのか分かりません。
イメージファイルは通常のテキストファイルとは異なる扱いをしていますか?もしそうなら、画像ファイルをブラウザに送信するためにはどうすればいいですか?
壊れヘッダーと悪い長さ(画像は文字列ではありません):
は、より多くの代わりにこのような何かを試してみてください。 –