最近项目里有一个小需求,要求上传文件夹进行后台批处理,嗯,想想感觉挺简单,毕竟H5的input file 便签有个webkitdirectory上传文件夹的特性,
做了个demo,在jsp页面中完美实现,可是嵌套了jquery语句,后来把模块集成到angular js的路由中,竟然出现无法响应!!!
查找资料也找不到如此的情景,多次实践之下,给出如下解决方案:
<input type="file" id="allFiles" οnchange='angular.element(this).scope().fileChanged(this)' webkitdirectory/>
我发现 绑定ng-modal的值无法响应,用源生js也获取不到文件,加onchange,可js获取数据
$scope.fileChanged = function(ele){
$scope.txtFiles = ele.files;
$scope.$apply(); //传播Model的变化。
}
然后又结合了angular js的upload上传组件,上传至后台
Upload.upload({
url:context+'/rule/testFromText',
data:{
file:$scope.txtFiles,
rule:angular.toJson($scope.rule,true),
project:angular.toJson($scope.project,true),
checkedRulesId:$scope.check_val}
}).success(function(data){
console.log(data);
//$scope.returnStr = data.returnStr;
alert(data.back);
});
此处贴出后台控制层接收关键代码:
MultipartRequest requestMu
MultipartHttpServletRequest request=(MultipartHttpServletRequest)requestMu;
Map<String, MultipartFile> maps=request.getFileMap();
Set<String> keys=maps.keySet();
for (String key : keys) {
MultipartFile file=maps.get(key);
String txtFileName=file.getOriginalFilename();
String fileType = txtFileName.substring(txtFileName.lastIndexOf(".")+1).toLowerCase();
}
如此完美解决0.0