从 http 服务器提供 gif 图像,在浏览器中显示不正常



我在Java中构建了一个简单的并发Web服务器,其中包含TCP套接字。它可以很好地服务于html,txt,css等...内容,但我在提供图像文件(在本例中为 gif(时遇到问题。

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

我已经尝试了将图像提供给客户端的不同方法,到目前为止,它们都不适合我。

这是我用于提供图像/gif 的代码:

       out = new PrintWriter(client.getOutputStream());
       httpHeader= (h+" 200 OK n" +
                            "Content-Type: image/gif"+"n" +
                            "Content-Length: "+f.length()+"nn");
                    //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 标头需要具有 rn 行终止符,而不是 n 。此外,由于变量httpHeader包含换行符(尽管是错误的换行符(,您应该通过调用 print() 来将其打印到流中,而不是附加另一个换行符的println()

谨慎的做法是在写入 GIF 数据后刷新它。

可能会有更多的问题。

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

尝试将 responseType:'arraybuffer' 添加到标头中。因此,浏览器可以正确插入文件。

相关内容

最新更新