从http服务器提供gif图像,而不是在浏览器中显示确定

时间:2015-03-18 08:04:12

标签: java image http server gif

我在Java中使用TCP套接字构建了一个简单的并发Web服务器。它可以很好地服务html,txt,css等...内容但我在提供图像文件时遇到问题(在这种情况下为gif)。

我认为这个过程没问题,因为浏览器获得200 OK状态的图像,数据(路径,文件大小等等)也可以;但是我无法完成浏览器显示图像,它总是显示带有替代文本的空图像。图像的路径也可以。

我尝试过将不同的方法提供给客户端,到目前为止,这些方法都没有对我有用。

这是我用来提供image / gif的代码:

       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();
    }

2 个答案:

答案 0 :(得分:2)

HTTP标头需要\r\n行终止符,而不是\n。此外,由于变量httpHeader包含换行符(尽管是错误的换行符),因此您应该通过调用print()而不是追加另一个换行符的println()将其打印到流中。

写完GIF数据后,应谨慎处理。

可能会有更多问题。

(顺便说一句,一次写一个字节数组的GIF数据要快得多。)

答案 1 :(得分:1)

尝试在标题中添加responseType:'arraybuffer'。因此浏览器可以正确地插入文件。