从我的Java Web服务器获取映像

时间:2012-05-17 05:48:29

标签: java webserver

我用Java创建了一个简单的HTTP服务器。当浏览器向我的Web服务器发送GET请求以获取图像文件时,假设为.jpg。目前我的浏览器无法正确获取图像。

究竟必须设置哪些标题字段?

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

设置长度
fin = new FileInputStream(fileName);
contentLength = fin.available();

Content-Type设置为正确的mime-type,所以没问题。

我使用以下方式编写文件数据:

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。

如果没有缺少标题字段,那么可能导致问题的原因是什么?

1 个答案:

答案 0 :(得分:3)

看起来好像你没有发送所有数据。尝试添加out.flush(); out.close();在fin.close()之前:

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

我还建议您将DataOutputStream包装到BufferedOutputStream中。从我的实践来看,与写入hd / network的DataOutputStream相比,它的工作速度要快得多。