2016-06-30 98 views
0

我發送一個使用JS的彈簧控制器的發佈請求,但我不能接收multipartFile數組,我得到的是null。我發送3個獨立的參數,如下所示。 (藝術品,軌道和元數據)MultipartFile數組沒有發送到彈簧控制器

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; 
    } 
    }). 

我確實收到的元數據(這是一個字符串)和藝術品(這是一種單一MultiPartFile)從參數,但空曲目(陣列MultiPartFile)。

這裏我控制器

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



} 
+0

你檢查開發商的控制檯,看看文件發送或調試,看看$ scope.files有文件? –

+0

嗨,是的,我沒有在控制檯輸出結果,它有文件... $ scope.file = [文件,文件,文件,文件,文件,文件](正確的輸出)只是沒有收到任何東西在控制器end @RossiRobinsion –

+0

我認爲你所要做的不是傳遞文件數組,而是可以將它們分別追加到FormData中。由於你的藝術作品文件正在工作,但跟蹤 –

回答

1

你可以試試這個,當你追加$scope.filesformData

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

沒有爲我工作:( –

+0

這工作對我來說,感謝您的幫助(var x = 0; x <$ scope.files.length; x ++){ formData.append(「tracks」 ,$ scope.files [x]); console.log($ scope.files [x]); } –

+0

@ D.Asare「for-in」是否真的不起作用?太奇怪了。:-( – Blank