servlet:将ServletInputStream转换为FileInputStream

时间:2010-08-10 10:48:11

标签: java servlets inputstream fileinputstream

我正在编写一个接收xml文件的servlet,将其提供给另一个类,并向客户端提供一些带有一些注释的html文件。 我正在使用类似的东西获取input-xml:

input = request.getInputStream();

但是这个输入是一个ServletInputStream而另一个类(用于注释)需要一个FileInputStream。

如果我给了XMLEventReader(在另一个类中)ServletInputStream,我得到一个解析错误:

ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.

我认为这是因为servletinputstream而不是fileinputstream。

问候 我希望有人能够帮助我:)。

3 个答案:

答案 0 :(得分:3)

我认为后一个问题不太可能是因为它是ServletInputStream。解析器不应该关心数据的来源。

我认为输入流中的数据更有可能是错误的。

如果所有可能,那么当前需要FileInputStream的课程应该重构为InputStream ...否则您必须将数据写入实际文件首先,这显然不理想。

答案 1 :(得分:0)

您应该从ServletInputStream中读取数据,并将其转储到FileOutputStream中。通过这种方式,您可以查看正在发送的数据,然后使用FileInputStream单独测试该数据,并使用您描述的需要它的类。我的猜测是,现在正在发生同样的事情,因为像上一张海报建议的那样,数据可能是错误的格式。

答案 2 :(得分:0)

好的,我现在有点聪明了:) 问题是:在ServletInputStream的开头(和一行末尾)有一些头信息(如内容类型等)。 是否有削减此信息的智能解决方案?

问候