Javascript 多部分文件数组未发送到spring控制器

Javascript 多部分文件数组未发送到spring控制器,javascript,java,spring,spring-mvc,Javascript,Java,Spring,Spring Mvc,我使用JS向我的spring控制器发送post请求,但无法接收多部分文件数组,因为我得到的都是null。我发送3个单独的参数,如下所示。(艺术品、曲目和元数据) 我确实从参数中接收元数据(一个字符串)和艺术品(一个单独的多部分文件),但对于轨迹(数组多部分文件)为空 这是我的控制器 @RequestMapping(value = "/review/{id}", method = RequestMethod.POST, produces = "application/json") @Res

我使用JS向我的spring控制器发送post请求,但无法接收多部分文件数组,因为我得到的都是null。我发送3个单独的参数,如下所示。(艺术品、曲目和元数据)

我确实从参数中接收元数据(一个字符串)和艺术品(一个单独的多部分文件),但对于轨迹(数组多部分文件)为空

这是我的控制器

    @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);



}

您可以在将
$scope.files
附加到
formData
;)时尝试此操作


您可以在将
$scope.files
附加到
formData
;)时尝试此操作


您是否检查了开发人员控制台,查看是否发送或调试了文件,以查看$scope.files是否包含这些文件?您好,是的,我在控制台上输出了结果,它包含文件$scope.file=[file,file,file,file,file,file,file](正确的输出)只是在控制器端@rossirobinsion不接收任何内容。我想你要做的不是传递文件数组,而是将它们分别附加到FormData中。由于您的艺术作品文件正在工作,但正在跟踪。上载的文件数量不是固定的,可能会有所不同。所以单独传递是不可能的。您是否检查了开发人员控制台,查看是否发送或调试了文件,以查看$scope.files是否包含这些文件?您好,是的,我在控制台上输出了结果,它包含文件$scope.file=[file,file,file,file,file,file,file](正确的输出)只是在控制器端@rossirobinsion不接收任何内容。我想你要做的不是传递文件数组,而是将它们分别附加到FormData中。由于您的艺术作品文件正在工作,但正在跟踪。上载的文件数量不是固定的,可能会有所不同。所以单独传递是不可能的,这对我来说很有效,谢谢你的帮助(var x=0;x<$scope.files.length;x++){formData.append(“tracks”,$scope.files[x]);console.log($scope.files[x]);}@D.Asare对于in真的不起作用吗?这太奇怪了。:-(看起来没有,在做了一些检查之后,似乎var将文件更改为整数,并且只存储文件在数组中的位置,而不是文件本身。这对我很有效,感谢您的帮助(var x=0;x<$scope.files.length;x++){formData.append(“tracks”,$scope.files[x]);console.log($scope.files[x]);}@D.Asare for in真的不起作用吗?这太奇怪了。:-(看起来没有,在做了一些检查之后,var似乎将文件更改为整数,并且只存储文件在数组中的位置,而不是文件本身。
    @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);



}
for (var file in $scope.files) {
    formData.append("tracks", file);
}