我需要收到一个HTTP Post Multipart,它只包含2个参数:
设置身体的正确方法是什么?我将使用Chrome REST控制台测试HTTP调用,所以我想知道正确的解决方案是为JSON参数和二进制文件设置"标签"键.
在服务器端我正在使用Resteasy 2.x,我将阅读这样的Multipart主体:
@POST
@Consumes("multipart/form-data")
public String postWithPhoto(MultipartFormDataInput multiPart) {
Map <String, List<InputPart>> params = multiPart.getFormDataMap();
String myJson = params.get("myJsonName").get(0).getBodyAsString();
InputPart imagePart = params.get("photo").get(0);
//do whatever I need to do with my json and my photo
}
Run Code Online (Sandbox Code Playgroud)
这是要走的路吗?使用标识特定内容处置的键"myJsonName"检索我的JSON字符串是否正确?有没有其他方法可以在一个HTTP多部分请求中接收这两个内容?
提前致谢
如何使用AngularJS发送POST请求?JSON部分是必需的,但文件不是.我已根据其他博客文章尝试了这一点,但它不起作用.我收到错误请求400错误.
将添加200点正确答案
var test = {
description:"Test",
status: "REJECTED"
};
var fd = new FormData();
fd.append('data', angular.toJson(test));
return $http.post('/servers', fd, {
transformRequest: angular.identity,
headers: {
'Content-Type': undefined
}
});
Run Code Online (Sandbox Code Playgroud) 有点卡在这一个,需要使用多部分表单上传图像和json ..不知道如何发送内容类型标题或上传图像..认为我需要转换为blob ..此刻我只是发送我从文件输入字段获得的数据.
任何建议都会非常感谢
$http({
method: 'POST',
url: URL,
headers: { 'Content-Type': false },
transformRequest: function (data) {
console.log(data);
var formData = new FormData();
formData.append("formatteddata", angular.toJson(data.model));
formData.append('media', Image)
return formData;
},
data: { model: shoutoutData, image: shoutoutImage}
}).
success(function (data, status, headers, config) {
alert("success!");
}).
error(function (data, status, headers, config) {
alert("failed!");
});
Run Code Online (Sandbox Code Playgroud)