Javascript 如何使用AngularJS$http发送多部分/表单数据
我正在开发一个使用不同服务rest(用java编写)的图形界面。 我必须调用这样的服务:Javascript 如何使用AngularJS$http发送多部分/表单数据,javascript,java,angularjs,http,Javascript,Java,Angularjs,Http,我正在开发一个使用不同服务rest(用java编写)的图形界面。 我必须调用这样的服务: @PUT @Path("nomeServizio") public Response nomeServizio(final FormDataMultiPart multiPart) { ......} @POST @Path("/upload") @Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadFile( @FormDa
@PUT
@Path("nomeServizio")
public Response nomeServizio(final FormDataMultiPart multiPart) {
......}
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
电话服务:
service: function (data) {
return $http({
url: PATH_REST_SERVICES + '/nomeServizio',
headers: {"Content-Type": "multipart/form-data"},
data: data,
method: "PUT"
});
}
当我从Angularjs服务文件请求时,如果服务的内容类型为multipart/form data,我会得到错误400(错误请求)
而如果服务的内容类型为“application/x-www-form-urlencoded;charset=utf-8”或“application/json;charset=utf-8”或“application/form-data”,则会出现415(不支持的媒体类型)错误
我正在用javascript和html5开发前端,我在web上找不到任何可以帮助我的东西,因为javascript中不存在FormDataMultiPart对象
我尝试以多种方式格式化要发送的数据,但它总是返回400或415
我应该如何格式化发送给rest呼叫的数据?
以及标题中的内容类型应如何?在java代码中,您需要编写如下代码:
@PUT
@Path("nomeServizio")
public Response nomeServizio(final FormDataMultiPart multiPart) {
......}
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
有关更多信息,请参考以下示例和链接:-
如何使用AngularJS$http发送表单数据
提供了一种方法,可以轻松地构造一组表示表单字段及其值的键/值对,然后可以使用该方法轻松地发送。如果编码类型设置为multipart/formdata
,它将使用与表单相同的格式
var formData = new FormData();
formData.append('type', type);
formData.append('description', description);
formData.append('photo', photo);
return $http({
url: PATH_REST_SERVICES + '/nomeServizio',
headers: {"Content-Type": undefined },
data: formData,
method: "PUT"
});
将内容类型标题设置为
未定义
,这一点很重要。通常,将内容类型设置为application/json
。当内容类型为未定义时
,将自动使用正确的设置将内容类型设置为多部分/表单数据
。问题是我无法更改我使用的其余服务。我应该找到一个解决方案,允许我(使用javascript或php)格式化FormDataMultiPart中的数据。