2012-05-17 48 views
3

我用Java创建了一个简单的HTTP服务器。当浏览器向我的Web服务器发送一个GET请求来获取图像文件时,让我们说.jpg。目前我的浏览器无法正确显示图像。从我的Java Web服务器获取图像

究竟是什么头字段必须设置?

目前我有日期,服务器,内容类型,内容长度,连接。我设置长度使用:

fin = new FileInputStream(fileName); 
contentLength = fin.available(); 

Content-Type设置为正确的MIME类型,所以没有问题。

我写使用文件数据:

public void sendFile (FileInputStream fin, DataOutputStream out) 
{ 
    byte[] buffer = new byte[1024]; 
    int bytesRead; 
    int strCnt = 0; 
    try 
    { 
     int cnt = 0; 
     while ((bytesRead = fin.read(buffer)) != -1) 
     { 
      out.write(buffer, 0, bytesRead); 
     } 
     fin.close(); 
    } 
    catch (IOException ex) 
    { 

    } 
} 

这就是我的浏览器Chrome的

Chrome Get http://s14.postimage.org/5am6y9zyp/fail_Image_Send.jpg

它似乎没有下载完整的内容长度好评。

图像文件的实际大小是2.73KB。

如果没有头字段丢失,那么会导致问题的原因是什么?

回答

3

看起来很喜欢你不发送全部数据。尝试添加out.flush(); out.close(); fin.close前():

out.flush(); 
out.close(); 
fin.close(); 

我也建议你换你DataOutputStream类成的BufferedOutputStream。从我的实践来看,在写入高清/网络时,与DataOutputStream相比,它的工作速度更快。