3

我用 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 浏览器收到的内容

铬获取

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

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

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

4

1 回答 1

3

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

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

我还建议您将 DataOutputStream 包装到 BufferedOutputStream 中。从我的实践来看,在写入 hd/network 时,它比 DataOutputStream 工作得更快。

于 2012-05-17T06:04:35.203 回答