使用Angular将多个文件上传到Spring Controller

时间:2017-11-28 18:42:44

标签: java spring angular

我想上传到服务器多个文件。这是我的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);
});

0 个答案:

没有答案