我正在接收包含inputstream的servlet。
InputStream input=req.getInputStream();
当我将输入流类型转换为sequenceinputstream时,我最终得到了ClassCastException org.apache.catalina.connector.CoyoteInputStream无法转换为java.io.SequenceInputStream。 请提供解决方案
答案 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我看不到获取“原始”输入流的方法。