我用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。
如果没有缺少标题字段,那么可能导致问题的原因是什么?
答案 0 :(得分:3)
看起来好像你没有发送所有数据。尝试添加out.flush(); out.close();在fin.close()之前:
out.flush();
out.close();
fin.close();
我还建议您将DataOutputStream包装到BufferedOutputStream中。从我的实践来看,与写入hd / network的DataOutputStream相比,它的工作速度要快得多。