この方法のように、それを試してみて、あなたは罰金になります:
$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オブジェクトの一部としてファイルを追加することができる方法のthatsないだろう。このようにして、コンテンツタイプ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
});
}
};
出典
2017-02-20 10:08:11
lin
はい。ここでは、stringartified jsonをmultipartに追加しています。反対の方法はありますか? JSONのマルチパートですか? –
@AmirSuhailなぜこれをしたいですか?この種のマルチパート構造では、バックエンド処理(JSON.parse)さえも簡単です - https://en.wikipedia.org/wiki/KISS_principle – lin
はい。しかし、バックエンドは、マルチパートを取得すると、サービスを呼び出す必要があります。上記の処理を行うと、データはリクエストボディとしてではなく、マルチパートのパラメータとして扱われます。リクエスト本体でデータを取得するには、その処理を行う必要があります。 –