Reputation: 103
I send a post request to my spring controller using JS, but am not able to receive a multipartFile array all i get is null. I send 3 separate parameters which are shown below. (artwork,tracks and metadata)
formData.append("artwork", $scope.image[0]);
formData.append("tracks", $scope.files);
formData.append("metadata",JSON.stringify(contentData));
// $http.post('/review/' + $scope.objectID, formData).then("Successfully got objects !", "Successfully got objects !");
$http({
url: '/review/'+ $scope.objectID,
method: 'POST',
headers: {'Accept': 'application/json', 'Content-Type': undefined},
data: formData,
transformRequest: function (data, headersGetterFunction) {
return data;
}
}).
I do receive metadata ( which is a String) and artwork (which is a single MultiPartFile) from the parameters but null for tracks (Array MultiPartFile).
Here my Controller
@RequestMapping(value = "/review/{id}", method = RequestMethod.POST, produces = "application/json")
@ResponseStatus(value=HttpStatus.OK)
public void formHandler(
@PathVariable("id") String id,
@RequestPart("artwork") MultipartFile artwork,
@RequestPart("tracks") MultipartFile[] tracks,
@RequestPart("metadata") String object) {
// SubmissionsRequestObject subObject = getSubObject(object, artwork, tracks);
// System.out.println(subObject.getAlbumname());
System.out.println(object);
System.out.println("-----");
System.out.println(tracks.length);
System.out.println(tracks);
System.out.println("-----");
for (MultipartFile t : tracks){
System.out.println("count");
}
System.out.println(artwork.getOriginalFilename());
// new SRP(subObject);
}
Upvotes: 0
Views: 3514
Reputation: 12378
You can try this when you append $scope.files
to formData
;)
for (var file in $scope.files) {
formData.append("tracks", file);
}
Upvotes: 4