将文件从jsp发送到Apache Camel servlet

时间:2016-02-19 21:36:09

标签: tomcat servlets apache-camel

我有一个带有文件上传表单的jsp,我想将此请求发送到Apache Camel servlet,处理请求并将文件进一步发送到另一条路径。

输入表格:

<form action="camel/upload" method="post" enctype="multipart/form-data">
    <input type="text" name="desc" />
    <input type="file" name="file" />
    <input type="submit" />
</form>

Camel servlet路由:

<route id="uploadRoute" streamCache="true">
  <from uri="servlet:upload?httpMethodRestrict=POST"/>
  <process ref="fileProcessor"/>
  <to uri="direct:inputMessages"/>
</route>

在fileProcessor bean中我有:

public void process(Exchange ex) throws Exception {
HttpServletRequest req = ex.getIn().getHeader(Exchange.HTTP_SERVLET_REQUEST , HttpServletRequest.class);
        String desc = req.getParameter("desc");
        System.out.println(desc);
        Part part = req.getPart("file");
}

这里desc为null,getPart抛出异常:

java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: Stream closed

如果我将交换体转换为String,我会看到有效的数据:

------ WebKitFormBoundaryqMDEm1jQr38BDpYP 内容处理:表格数据;名称= “desc” 的

一些描述 ------ WebKitFormBoundaryqMDEm1jQr38BDpYP 内容处理:表格数据; NAME = “文件”;文件名= “myfile.txt的” 内容类型:text / plain

结束上传 ------ WebKitFormBoundaryqMDEm1jQr38BDpYP -

我想将交换机构设置为 part.getInputStream() 并发送到文件处理路径。

这是这样做的方法吗?我怎么能解决上面的例外?

0 个答案:

没有答案