我正在使用Apache CXF并拥有以下JAX-RS POST服务:
@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成功调用服务:
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控制台,我可以看到只发送了一个Request Payload,即文件。 JSON没有被发送。
所以我将尝试使用jquery帖子。 如何使用jquery发送两个Request Payload?
答案 0 :(得分: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
});