问题描述
- linux上用c写的web,webserver将以二进制图片读入数组传给浏览器,但是不能显示
-
自己在linux上用c写了webserver,在处理图片请求的时候,web服务器将请求的图片数据发送给浏览器显示,我也是按照找请求图片文件然后读取文件二进制数据进入一个申请好的数组,然后将数组发给浏览器,请求的头也写好了,content-type等等。但是最后在浏览器上显示的是乱码(应该就是二进制吧)。头显示的是HTTP/1.0 200 OK
Server: MY Web Server
Content-Length:4 bytes
Content-Type:image/jpeg
Connection: keep-alive。就是显示不出来图片,有没有知道这个问题的亲,求指教一下,谢谢
解决方案
content-type对不对?
另外你浏览器接收到的二进制数据对不对,典型的,如果是jpeg图片,文件头中有jfif几个字,有没有。主要是检查下传输的数据有没有问题。
解决方案二:
把接受的数据还原一下,估计数据格式被损坏了
解决方案三:
我的处理代码是这样的,之前判断的jpeg不行,现在改为png了,也是一样显示不出来,每当浏览器输入uri时会出现该图片有问题无法显示的提示。
FILE *fpjp=NULL;
int tmp;
if(strncmp(file,"sword.png",9)==0)
{
fpjp=fopen(file,"rb");
if(fpjp!=NULL)
{
int ich;
int i=0;
char buff01[MAX]={''};
memset(buff01,0,sizeof(buff01));
while((ich=getc(fpjp))&&ich!=EOF)
{
buff01[i++]=ich;
}
send_http_jpeghead(conn_socket,200, "OK", "image/png");
write(conn_socket, buff01, strlen(buff01));
printf("this buffo1 stream is:%sn",buff01);
}
}
希望楼上的两位可以指点一下,content-type是对的,还有就是另外一位朋友说的数据还原我不是很懂,希望可以指教,谢谢。