从 http 服务器提供 gif 图像,在浏览器中显示不正常
Serve gif image from http server, not displaying ok in the browser
我在 Java 中使用 TCP 套接字构建了一个简单的并发 Web 服务器。它可以很好地提供 html、txt、css 等内容...但我在提供图像文件(在本例中为 gif)时遇到问题。
我认为这个过程没问题,因为浏览器得到状态为 200 OK 的图像和数据(路径、文件大小等...)也没问题;但我无法让浏览器显示图像,它总是显示带有替代文本的空图像。图片路径也可以。
我尝试了多种向客户端提供图像的方法,none 到目前为止对我有用。
这是我用于服务 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();
}
HTTP header 需要 \r\n
行终止符,而不是 \n
。此外,由于变量 httpHeader
包含换行符(尽管换行符类型错误),您应该通过调用 print()
将其打印到流中,而不是 println()
附加另一个换行符。
GIF 数据写入后刷新是明智的。
可能还有更多问题。
(顺便说一句,一次写入一个字节数组的 GIF 数据会快得多。)
尝试将 responseType:'arraybuffer' 添加到 header。因此浏览器可以正确解释文件。
我在 Java 中使用 TCP 套接字构建了一个简单的并发 Web 服务器。它可以很好地提供 html、txt、css 等内容...但我在提供图像文件(在本例中为 gif)时遇到问题。
我认为这个过程没问题,因为浏览器得到状态为 200 OK 的图像和数据(路径、文件大小等...)也没问题;但我无法让浏览器显示图像,它总是显示带有替代文本的空图像。图片路径也可以。
我尝试了多种向客户端提供图像的方法,none 到目前为止对我有用。
这是我用于服务 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();
}
HTTP header 需要 \r\n
行终止符,而不是 \n
。此外,由于变量 httpHeader
包含换行符(尽管换行符类型错误),您应该通过调用 print()
将其打印到流中,而不是 println()
附加另一个换行符。
GIF 数据写入后刷新是明智的。
可能还有更多问题。
(顺便说一句,一次写入一个字节数组的 GIF 数据会快得多。)
尝试将 responseType:'arraybuffer' 添加到 header。因此浏览器可以正确解释文件。