在我的Java应用程序中,我将com.sun.net.httpserver
类用于小型内置Web服务器。我也想支持文件上传。用户可以从网页中选择标准HTML格式的文件:
<form action="${home_url}/upload" enctype="multipart/form-data" method="post">
<fieldset>
<input type="file" id="inp" name="filename" size="50"><br>
<input type="submit" id="btn" value="Upload">
</fieldset>
</form>
在上传页面的处理程序中(数据发布到的地方)我执行以下操作:
InputStreamReader input = new InputStreamReader(exchange.getRequestBody(), "utf-8");
BufferedReader reader = new BufferedReader(input);
String line = reader.readLine();
while(line != null)
{
parser.addLine(line);
line = reader.readLine();
}
但是,我第一次调用reader.readLine()
时收到的字符串不包含原始文件的第一行。相反,我在Java代码中获得的第一行是上传文件中间某行的一部分。
似乎文件的第一部分以某种方式丢失了。这是可重现的,我从第一个readLine()
获得的内容总是相同的(在上传过程中总是丢失相同数量的字节)。
有什么想法吗?