Java 从http服务器提供gif图像,在浏览器中不显示ok
我用Java构建了一个带有TCP套接字的简单并发web服务器。它可以很好地服务于html、txt、css等。。。内容,但我在提供图像文件(本例中为gif)时遇到问题 我认为这个过程是正常的,因为浏览器获得的图像状态为200 ok,数据(路径、文件大小等)也正常;但我无法实现浏览器显示图像,它总是显示一个带有可选文本的空图像。图像的路径也可以 我尝试过不同的方法为客户提供形象服务,到目前为止,没有一种方法对我有效 这是我用于提供图像/gif的代码:Java 从http服务器提供gif图像,在浏览器中不显示ok,java,image,http,server,gif,Java,Image,Http,Server,Gif,我用Java构建了一个带有TCP套接字的简单并发web服务器。它可以很好地服务于html、txt、css等。。。内容,但我在提供图像文件(本例中为gif)时遇到问题 我认为这个过程是正常的,因为浏览器获得的图像状态为200 ok,数据(路径、文件大小等)也正常;但我无法实现浏览器显示图像,它总是显示一个带有可选文本的空图像。图像的路径也可以 我尝试过不同的方法为客户提供形象服务,到目前为止,没有一种方法对我有效 这是我用于提供图像/gif的代码: out = new PrintWr
out = new PrintWriter(client.getOutputStream());
httpHeader= (h+" 200 OK \n" +
"Content-Type: image/gif"+"\n" +
"Content-Length: "+f.length()+"\n\n");
//Send header to the client
out.println(httpHeader);
out.flush();
//Send gif file content to the cliente
returnGIF(f);
private void returnGIF(File f) throws IOException{
FileInputStream fis = new FileInputStream(f.getPath());
int b=0;
while ((b=fis.read()) != -1){
out_bis.write(b);
}
fis.close();
}
HTTP头需要有
\r\n
行终止符,而不是\n
。此外,由于变量httpHeader
包含换行符(尽管换行符的类型不正确),您应该通过调用print()
,而不是附加另一个换行符的println()
,将其打印到流中
在写入GIF数据后刷新它是谨慎的
可能还有更多的问题
(顺便说一句,一次将GIF数据写入一个字节数组会快得多。)HTTP头需要有
\r\n
行终止符,而不是\n
。此外,由于变量httpHeader
包含换行符(尽管换行符的类型不正确),您应该通过调用print()
,而不是附加另一个换行符的println()
,将其打印到流中
在写入GIF数据后刷新它是谨慎的
可能还有更多的问题
(顺便说一句,一次将GIF数据写入一个字节数组会快得多。)尝试将responseType:“arraybuffer”添加到标头。因此浏览器可以正确地对文件进行排序。尝试将responseType:“arraybuffer”添加到标题中。因此浏览器可以正确地对文件进行排序。尝试将responseType:'arraybuffer'添加到标题中。returnGif如何访问客户端的输出流?@SomeRandomName谢谢!!这就是解决办法!您可以将其发布为答案=)尝试将responseType:'arraybuffer'添加到标题中。returnGif如何访问客户端的输出流?@SomeRandomName谢谢!!这就是解决办法!你可以把它作为一个答案发布=)我可以看出这是一个怎样的问题…它已经解决了一半的问题,一些图像显示,但其他的仍然没有。无论如何,谢谢你,我会一直记住你的答案。顺便说一句,你用字节数组写GIF数据是对的,我已经有了这个方法,但我没有使用它。我可以看出这是一个问题……它解决了一半的问题,一些图像显示,但其他仍然没有。无论如何,谢谢你,我会一直记住你的答案。顺便说一句,你用字节数组写GIF数据是对的,我已经有了这个方法,但我没有使用它。