我可以使用Web server.c在浏览器中显示html和纯文本文件。但是,当我尝试加载图像jpeg文件时,它给我这个错误“图像http://127.0.0.1:8080/index.jpeg ”无法显示,因为它包含错误。
我将内容类型设置为“ image / jpeg”。
这是我的代码:
FILE *fp;
char ch;
unsigned long fileLen;
unsigned char *buffer;
fp = fopen(page+1,"rb");
fseek(fp, 0, SEEK_END);
fileLen=ftell(fp);
fseek(fp, 0, SEEK_SET);
buffer=(char *)malloc(fileLen);
fread(buffer,fileLen,sizeof(unsigned char),fp);
fclose(fp);
write (connection_fd, buffer, strlen(buffer));
这是我设置的图像的标题
“ HTTP / 1.1 200 OK \ r \ n”“内容类型:image / jpeg \ r \ n”“连接:close \ r \ n”“ \ r \ n”;
请指教。谢谢 :)
你的write()
说法是错误的。返回的值strlen(buffer)
将是JPEG文件中第一个零字节的位置。尝试fileLen
改用。
这是我想到的其他几件事:
在fread()
通话中,第二个和第三个参数实际上应该是相反的。而且,由于sizeof(unsigned char)
是1
通过定义,我会用fread(buffer,1,fileLen,fp);
代替。
您应该真正检查fopen()
,等返回的值。
您使用的page+1
建议是将未经检查的HTTP查询字符串参数直接放入文件系统调用中。显然,您不想这样做:-)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句