2014-08-28 58 views
1

我使用Apache CXF,並具有以下JAX-RS POST服務:如何使用jQuery發佈文件和json?

@POST 
@Path("/{id}/upload") 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
public Response uploadFile(@PathParam("id") final String id, 
     @Multipart(value = "file") final InputStream inputStream, 
     @Multipart(value = "body") final SomeDTO dto); 

我可以成功調用,捲曲的服務是這樣的:

curl -F file="@filetoparse.csv;type=text/csv" -F body='{"time": "2000-01-02T15:11:00-0700","employeeId": "e1"};type=application/json' http://localhost:8085/my-app/1.0.0/somepath/1/upload 

我試着打電話與服務一個html表單。但沒有運氣。查看Chrome控制檯,我可以看到只有1個請求有效負載正在發送,該文件。 JSON沒有被髮送。

所以我打算嘗試一個jQuery的帖子。 如何發送兩個請求有效載荷與jQuery?

回答

1

我可以使它與此調用工作:

var data = new FormData(); 

myFile = $("#myId").find("input[type='file']")[0].files[0]; 
var fileblob = new Blob([myFile], { type: "text/csv"}); 
data.append('file', fileblob); 

var myJson = $("#myId2").find("textarea").val(); 
var jsonblob = new Blob([myJson], { type: "application/json"}); 
data.append('body', jsonblob); 

$.ajax({ 
    url: 'someUrl', 
    data: data, 
    cache: false, 
    contentType: false, 
    processData: false, 
    type: 'POST' 
}).done(function (data, statusText, xhr) { 
    var status = xhr.status; 
    //Do something depending the status 
});