我使用的是角度1.5,我必须点击服务才能上传文件。在同一服务中,我也必须将JSON作为请求体传递。
当我使用Content-type: application/json
multipart for file无法正常工作时,如果我使用Content-type: undefined
,那么multipart将起作用,但JSON参数不起作用。那么有什么方法可以设置value
{j} {j} key-value
对multipart
?或者其他任何方式来做到这一点?
由于
答案 0 :(得分:1)
以这种方式尝试,你会没事的:
$scope.uploadMultipart = function(file, jsonObject, uploadUrl){
var formData = new FormData();
formData.append('json',JSON.stringify(jsonObject));
formData.append('file', file);
return $http({
url: uploadUrl,
method: 'POST',
data: formData,
headers: { 'Content-Type': undefined},
transformRequest: angular.identity
});
};
我不推荐它,但这就是你如何将文件添加为JSON对象的一部分。通过这种方式,您可以发布内容类型application/json
。
$scope.uploadHack = function(file, jsonObject, uploadUrl){
var aReader = new FileReader();
aReader.readAsText(file, "UTF-8");
aReader.onload = function (evt) {
//append file to json as raw data
jsonObject.file = {
content: aReader.result,
name: file.name,
size: file.size
};
$http({
url: uploadUrl,
method: 'POST',
data: jsonObject,
headers: { 'Content-Type': 'application/json'},
transformRequest: angular.identity
});
}
};