【发布时间】:2015-01-07 00:47:36
【问题描述】:
我希望实现一个路由,其中 reslet/cxfrs 端点将接受文件作为多部分请求和处理。 (请求也可能有一些 JSON 数据。
提前致谢。 问候。 [编辑] 已尝试以下代码。还尝试使用 curl 发送文件。我可以在标题和调试输出中看到文件相关信息,但无法检索附件。
from("servlet:///hello").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
Message in = exchange.getIn();
StringBuffer v = new StringBuffer();
HttpServletRequest request = (HttpServletRequest) in
.getHeaders().get(Exchange.HTTP_SERVLET_REQUEST);
DiskFileItemFactory diskFile = new DiskFileItemFactory();
FileItemFactory factory = diskFile;
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);
.....
卷曲: curl -vvv -i -X POST -H "Content-Type: multipart/form-data" -F "image=@/Users/navaltiger/1.jpg; type=image/jpg" http://:8080/JettySample /骆驼/你好
以下代码有效(但不能使用,因为它嵌入了码头,我们想将其部署在 tomcat/weblogic 上)
public void configure() throws Exception {
// getContext().getProperties().put("CamelJettyTempDir", "target");
getContext().setStreamCaching(true);
getContext().setTracing(true);
from("jetty:///test").process(new Processor() {
// from("servlet:///hello").process(new Processor() {
public void process(Exchange exchange) throws Exception {
String body = exchange.getIn().getBody(String.class);
HttpServletRequest request = exchange.getIn().getBody(
HttpServletRequest.class);
StringBuffer v = new StringBuffer();
// byte[] picture = (request.getParameter("image")).getBytes();
v.append("\n Printing All Request Parameters From HttpSerlvetRequest: \n+"+body +" \n\n");
Enumeration<String> requestParameters = request
.getParameterNames();
while (requestParameters.hasMoreElements()) {
String paramName = (String) requestParameters.nextElement();
v.append("\n Request Paramter Name: " + paramName
+ ", Value - " + request.getParameter(paramName));
}
【问题讨论】:
标签: apache-camel restlet