39,084
社区成员
发帖
与我相关
我的任务
分享
<input type="file" name="picType1" nv-file-select="" uploader="uploader" ng-click="clearItems(1,0)"/>浏览
<button type="button" ng-click="UploadFile()">提交</button>
$scope.CasePic = null;
var uploader = $scope.uploader = new FileUploader({
url: 'upload/caseFile',
queueLimit: 1, //文件个数
removeAfterUpload: true //上传后删除文件
});
$scope.clearItems = function(type,classification){ //重新选择文件时,清空队列,达到覆盖文件的效果
uploader.clearQueue();
//动态赋值
$scope.CasePic = {caseInfoId:$scope.Model.id,type:type,classification:classification};
}
//向队列中添加一个单独的文件后触发
uploader.onAfterAddingFile = function(fileItem) {
fileItem.formData = [$scope.CasePic];//数据放到这里。 当文件被添加到队列时,来自FileUpload的设置被复制到FileItem。因此,FileUpload在将文件添加到队列后对选项所做的任何更改都将不起作用
$scope.fileItem = fileItem._file; //添加文件之后,把文件信息赋给scope
//能够在这里判断添加的文件名后缀和文件大小是否满足需求。
};
//一个文件上传成功后触发
uploader.onSuccessItem = function(fileItem, response, status, headers) {
if(response.success){
ngNotify.set('上传图片成功', 'success');
$scope.findById();
}
};
//上传出错时触发
uploader.onErrorItem = function(fileItem, response, status, headers) {
console.info('onErrorItem', fileItem, response, status, headers);
};
$scope.UploadFile = function(){
uploader.uploadAll();
}
@RequestMapping(value = "/caseFile", method = RequestMethod.POST)
public JsonResult uploadImg(@RequestParam("file")MultipartFile file,CasePic casePic) throws IOException{}
/**
* 上传文件
* */
public JsonResult uploadFile(MultipartFile file, String fileDirPath) throws IOException{
if(!file.isEmpty()){
String fileName = file.getOriginalFilename();
String extensionName = StringUtils.substringAfter(fileName,".");
//生成新的guid的文件名
String newFileName = UUID.randomUUID()+ "."+extensionName;
FileUtils.createDirectory(FileUtils.path(fileDirPath));
Path filePath = Paths.get(fileDirPath, newFileName);
//保存到响应的路径下
Files.copy(file.getInputStream(), filePath);
UploadResult uploadResult = new UploadResult();
uploadResult.setSrc(newFileName);
uploadResult.setName(fileName);
return JsonResult.success(uploadResult);
}else{
return JsonResult.fail("无文件");
}
}
}