我正在开发一个使用不同服务 rest 的图形界面(用 java 编写)。 我必须调用这样的服务:
@PUT
@Path("nomeServizio")
public Response nomeServizio(final FormDataMultiPart multiPart) {
......}
调用服务:
service: function (data) {
return $http({
url: PATH_REST_SERVICES + '/nomeServizio',
headers: {"Content-Type": "multipart/form-data"},
data: data,
method: "PUT"
});
}
当我从我的 Angularjs 服务文件请求时,我得到:错误 400(错误请求)如果服务有一个 Content-Type = multipart/form-data
如果服务的 Content-Type = "application/x-www-form-urlencoded; charset = utf-8"或 "application/json; charset = utf- 8”或“应用程序/表单数据”。
我正在用 javascript 和 html5 开发前端,我在网上找不到任何可以帮助我的东西,因为 FormDataMultiPart 对象在 javascript 中不存在。
我尝试格式化要以多种方式发送的数据,但它总是返回 400 或 415。
我应该如何格式化数据以发送到 rest 调用?
Content-Type 应该如何出现在标题中?
最佳答案
如何使用AngularJS $http发送FormData
FormData interface提供了一种轻松构建一组表示表单字段及其值的键/值对的方法,然后可以使用 XHR Send 轻松发送这些键/值对方法。如果编码类型设置为 multipart/form-data
,它使用的格式与表单使用的格式相同。
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"
});
将内容类型 header 设置为undefined
很重要。通常 $http service将内容类型设置为 application/json
。当内容类型为 undefined
时,XHR API将使用适当的 multi-part boundary 自动将内容类型设置为 multipart/form-data
.
关于javascript - 如何使用 AngularJS $http 发送 multipart/form-data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44725549/