将servletinputstream转换为sequenceinputstream

时间:2011-03-15 05:21:07

标签: java servlets stream

我正在接收包含inputstream的servlet。

InputStream input=req.getInputStream();

当我将输入流类型转换为sequenceinputstream时,我最终得到了ClassCastException org.apache.catalina.connector.CoyoteInputStream无法转换为java.io.SequenceInputStream。 请提供解决方案

4 个答案:

答案 0 :(得分:1)

为什么要使用sequenceinputstream?

Servlet请求只能包含一个InputStream。你无法转换或施放。 如果你的目标是阅读sevlet收到的输入,只需继续阅读InputStream。

答案 1 :(得分:1)

我猜你还在处理your other problem。您无法将ServletInputStream转换为SequenceInputStream。您可以从SequenceInputStream创建新的ServletInputStream,但这对您没有帮助,因为您正在尝试访问各个部分(并且ServletInputStream只是没有该信息)。放弃,你正试图解决错误的问题。

如果您要处理上传的文件,请尝试使用Commons / FileUpload。有关示例,请参阅usage page

答案 2 :(得分:0)

SequenceInputStream将两个或多个输入流合并为一个。它可以通过传递InputStreamEnumerator来创建,如下所示:

Vector files = new Vector(); 
files.addElement("/run.bat"); 
files.addElement("/run.sys"); 
InputStreamEnumerator e = new InputStreamEnumerator(files); 
InputStream input = new SequenceInputStream(e); 

或提供两个InputStream,如下所示:

InputStream input1 = new FileInputStream("c:\\data\\file1.txt");
InputStream input2 = new FileInputStream("c:\\data\\file2.txt");
InputStream combined = new SequenceInputStream(input1, input2);

答案 3 :(得分:0)

“在servlet请求中,他们发送sequenceinputstream”是什么意思?您的意思是客户端正在发送从序列输入流中读取数据的数据吗? 无论如何两个流(客户端的输出和servlet中的客户端)完全不相关,我认为你不能做你的意思。 另外看一下org.apache.catalina.connector.CoyoteInputStream API我看不到获取“原始”输入流的方法。