我正在使用Java中的HTTP服务器,为了测试目的,它在Windows 8.1下运行。
它的编码方式使得当设置某个参数时,它会改变HTTP文件的标题,并通过套接字发送文件,类似于:
socket.outputStream.write(filter.read());
假设通信工作正常,因为我已经使用各种其他过滤器对其进行了测试,并且它运行良好。
其中一个过滤器应该抓取HTML文件,压缩然后将其发送到客户端,而无需在服务器计算机中创建文件。这是标题:
"HTTP/1.1 200 OK\nContent-Type: application/zip\nContent-Disposition: filename=\"" + request + ".zip\"\n";
之后,我将我的过滤器设置为我创建的类(在下面复制)并发送文件。我的问题是,即使服务器最终发送数据,客户端也只下载一个空的zip文件,里面没有任何内容。
我已经坚持这个问题几天了,我似乎无法弄清楚出了什么问题。我认为创建条目或者关闭输出的方式有问题。我不能确定。
我真的很感激在这个问题上给我的任何建议。谢谢你的关注。
class ZipFilterInputStream extends FilterInputStream
{
protected ZipFilterInputStream(InputStream inputToFilter) throws IOException
{
super(inputToFilter);
//Get the stuff ready for compression
ByteArrayOutputStream out = new ByteArrayOutputStream();
ZipOutputStream zout = new ZipOutputStream(out);
zout.putNextEntry(new ZipEntry("file.html"));
//Compress the stream
int data = in.read();
while (data != -1)
{
zout.write(data);
data = in.read();
}
zout.closeEntry();
zout.finish();
//Get the stream ready for reading.
in = new ByteArrayInputStream(out.toByteArray());
out.close();
}
public int read() throws IOException
{
return in.read();
}
}