在同一请求中发送多种类型的内容
Sending multiple type of content in same request
我正在使用 angular 1.5,我必须点击服务才能上传文件。在同一服务中,我也必须传递一个 JSON 作为请求正文。
当我对文件使用 Content-type: application/json
multipart 时不起作用,如果我使用 Content-type: undefined
则 multipart 将起作用,但 JSON 参数将不起作用。那么有什么方法可以将 key-value
对 json 中的 value
设置为 multipart
吗?或者有其他方法吗?
谢谢
这样试试就可以了:
$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 对象的一部分。这样你就可以 post 在 content-type 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
});
}
};
我正在使用 angular 1.5,我必须点击服务才能上传文件。在同一服务中,我也必须传递一个 JSON 作为请求正文。
当我对文件使用 Content-type: application/json
multipart 时不起作用,如果我使用 Content-type: undefined
则 multipart 将起作用,但 JSON 参数将不起作用。那么有什么方法可以将 key-value
对 json 中的 value
设置为 multipart
吗?或者有其他方法吗?
谢谢
这样试试就可以了:
$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 对象的一部分。这样你就可以 post 在 content-type 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
});
}
};