我想上传多个文件到服务器。这是我的角度代码:
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);
});
终于我明白了。解决方案是将所有文件分开添加到FormData中,而不是作为列表或数组:
angular.forEach($scope.file, function (value, key) {
fd.append('files', value);
})
然后在Spring控制器中:
public void createTicket(@RequestParam(required = false) MultipartFile[] files)
该数组包含所有追加的文件。
我有一个这样的控制器,我想提交一个带有文件上传的表单,以及一些表单数据,如下图所示的标签。此外,我想使用@RequestBody来实现这一点,以便在添加更多变量时,在包装器上使用@Valid注释。 我的包装纸是: 但我想将其从ModelAttributes转换为@RequestBody。 我尝试的方法是将文件上传作为请求参数分开,如下所示: 在模拟MVC中,我设置: 但我得到了这样一个错误,它说:
我需要上传文件使用Spring引导和角,所以这是控制器代码,很好地工作使用邮差 -component.ts代码: -HTML代码: 出现此错误
我试图创建一个页面,用户可以张贴图像及其细节。现在,当我测试来自postman的spring boot服务时,我能够成功地在服务中获取文件。当我试图从angular5中做同样的事情时,多部分文件在服务中没有被识别,并且总是得到空数组。 我的角服务代码如下 } 我已经尝试添加标头,如multipart/form-data,并将其设置为un定义。无论哪种方式,我都收到了错误。在发布到这里之前,我已经广
我正在尝试使用angularjs和spring MVC上传一个文件 在application-context.xml中有一个multipartResolver bean。 我表单如下所示:
是否可以使用数据上传包含其他数据(如描述等)的文件?我正在使用骨干.js在我的前端,我用它调用REST API(jQuery)。我不使用任何视图解析器,但我想以某种方式将我的文件传递给控制器,如下所示: 以便uploadItem存储: 但是我不会(也不能)把这个加到我的模型里。 当然,我也很感兴趣是否有可能有这样的控制器:
我使用Spring引导上传文件。文件大小通常约为2GB,我们不能使用默认的Spring引导或,因为服务器具有有限的资源(磁盘空间)或用于缓冲的内存。所以我们想获取文件输入蒸汽并将文件直接存储到云存储中。 我知道spring boot有<code>多部分。已启用属性,因此我可以将其设置为false以跳过spring。但这会全局禁用多部分。是否有人知道是否有方法通过控制器/方法禁用多部分?