我想上传到服务器多个文件。这是我的Angular代码:
app.directive('fileModel', ['$parse', function ($parse) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function () {
scope.$apply(function () {
modelSetter(scope, element[0].files);
});
});
}
};
}]);
控制器的一部分:
var fd = new FormData();
fd.append('files', $scope.file);
fd.append('ticketDto', JSON.stringify(data));
$http({
method: 'POST',
url: url,
headers: {
'Content-Type': undefined
},
data: fd,
arrayKey: '',
transformRequest: function (data, headersGetterFunction) {
return data;
}
})
问题在于控制器:
public void createTicket(@RequestParam(value = "files", required = false) List<MultipartFile> files,
Authentication authentication,
@RequestParam(value = "ticketDto", required = false) String name)
'files'列表始终为空(我也尝试过MultipartFile []而不是list)。它仅适用于在指令中返回的并非所有文件,而是一个,例如:
scope.$apply(function () {
modelSetter(scope, element[0].files[0]);
});
而不是
scope.$apply(function () {
modelSetter(scope, element[0].files);
});