2014-10-10 91 views
2

我試圖做一個REST風格的WS上傳與CXFRS駱駝分量的文件,我試圖以檢索通過getAttachment方法上傳的文件,但它始終是空的。駱駝CXFRS - 空附件

這是我的代碼:

EndPoint類:ExposedApi.java

@Path("/test") 
public class ExposedApi { 
@POST 
@Path("/resources/solver") 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Produces(MediaType.APPLICATION_JSON) 
public Response upload(@Multipart(value = "file") Attachment attachments){ 
    return null; 
    } 
} 

代碼擴展routebuolder:RouteConf.java

public class RouteConf extends RouteBuilder { 
@Override 
public void configure() throws Exception { 
    // TODO Auto-generated method stub 
    getContext().setTracing(true); 

    from("cxfrs://http://localhost:9090/test?resourceClasses=org.foo.ExposedApi") 
    .streamCaching() 
    .process(new Processor() { 
     public void process(Exchange exchange) throws Exception { 

      Message inMessage = exchange.getIn();  
      String operationName = inMessage.getHeader(CxfConstants.OPERATION_NAME, String.class);   

      if (operationName=="upload"){ 
       Map<String, DataHandler> names= inMessage.getAttachments(); 


       exchange.getOut().setBody(inMessage.getAttachmentNames().toString()+ " TEST "+ names.keySet().toString()); 
         } 

      } 
    }); 
    } 
} 

捲曲要求:

curl -v -F "[email protected]/Users/Massimo/Desktop/ic_eb.png" http://localhost:9090/test/test/resources/solver 

和這是迴應

* Adding handle: conn: 0x7f92cb804000 
* Adding handle: send: 0 
* Adding handle: recv: 0 
* Curl_addHandleToPipeline: length: 1 
* - Conn 0 (0x7f92cb804000) send_pipe: 1, recv_pipe: 0 
* About to connect() to localhost port 9090 (#0) 
* Trying ::1... 
* Trying 127.0.0.1... 
* Connected to localhost (127.0.0.1) port 9090 (#0) 
> POST /test/test/resources/solver HTTP/1.1 
> User-Agent: curl/7.30.0 
> Host: localhost:9090 
> Accept: */* 
> Content-Length: 89280 
> Expect: 100-continue 
> Content-Type: multipart/form-data; boundary=----------------------------837830fae872 
> 
< HTTP/1.1 100 Continue 
< HTTP/1.1 200 OK 
< Content-Type: application/json 
< Date: Fri, 10 Oct 2014 14:54:51 GMT 
< Content-Length: 10 
* Server Jetty(7.6.9.v20130131) is not blacklisted 
< Server: Jetty(7.6.9.v20130131) 
< 
* Connection #0 to host localhost left intact 
[] TEST [] 

我在做什麼錯了?我怎樣才能檢索附件?

回答

2

一些工作後,我已經找到解決方案。

附件是在體內。

如果你想retrive這行代碼爲我工作

Attachment att = (Attachment)inMessage.getBody(ArrayList.class).get(0); 
附件