springboot实现文件上传步骤解析
这篇文章主要介绍了springboot实现文件上传步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
第一步编写上传的前段页面
单个文件上传 文档入库
这篇文章主要介绍了springboot实现文件上传步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
第一步编写上传的前段页面
单个文件上传 文档入库
第二步写对应的js页面
/** *@Name:historyStorageCtrl,井史数据入库 *@Date:2019-06-19 *@Author:huofenwei */ (function(angular){ 'usestrict'; angular.module('Lujing').controller('historyStorageCtrl',['$scope','$http','ToastService','$compile','$timeout','HttpService','$filter', function($scope,$http,ToastService,$compile,$timeout,HttpService,$filter){ $scope.fileInvalid=false; var$fileInput=initFileInput("importFile",'/server/search/upload'); /** *初始化文件上传 */ functioninitFileInput(ctrlName,uploadUrl){ varcontrol=$('#'+ctrlName); control.fileinput({ language:'zh', uploadUrl:uploadUrl,//上传的地址 allowedFileExtensions:['doc','docx','xls','xlsx','ppt','pptx','pdf','mp4','avi','wmv','asf','asx','rm','rmvb','3gp','mov','m4v','dat','mkv','flv','vob'], showUpload:true,//是否显示上传按钮 showCaption:true,//是否显示标题 showPreview:false,//是否显示预览区域 browseClass:"btnbtn-primary",//按钮样式 previewFileIcon:"", }).on('fileuploaderror',fileuploaderror).on("fileuploaded",function(event,data,previewId,index){ //console.log(data);.on('fileselect',fileselect) $scope.$apply(function(){ $scope.fileId=data.response.fileId;//未执行 $scope.document.fileName=data.files[0].name; }); }).on("filecleared",function(event,data,msg){ $scope.$apply(function(){ $scope.fileInvalid=false; }); }); returncontrol; } /** *清空输入框 */ functionimportClearFunc(){ if($fileInput) $fileInput.fileinput('clear'); $scope.fileInvalid=false; } /** *文件上传错误 **/ functionfileuploaderror(event,data,msg){ $scope.fileInvalid=true; $scope.$apply(); $('.modal-body.kv-upload-progress').css('display','none'); if(!(data.jqXHR.responseJSON)){//文件类型验证错误 $('#fileError').html(msg); }else{//上传错误 console.log(data); varstatusCode=data.jqXHR.responseJSON.message; varerrorMsg=HTTP_ERROR_MAP[''+statusCode]; $('#fileError').html(errorMsg); } } /** *add打开添加模态框 */ $scope.openAddModal=function(){ $scope.document={}; $scope.document.classificationId=1; $scope.document.starGrade=5; $timeout(importClearFunc); //openModeldialog(); }; /** *表单验证 *@returns{boolean} */ functionformVlidate(){ if(!$scope.document.introduction){ returnfalse; } if(!$scope.document.keyPackage){ returnfalse; } returntrue; } /** *提交表单信息 */ $scope.submitFileInfo=function(){ if(!$scope.fileId){ //ToastService.alert("提示","先上传文件,再提交表单","info"); console.error("先上传文件,再提交表单"); return; } if(!formVlidate()){ //ToastService.alert("提示","请填充表单","info"); console.error("请填充表单"); return; } $scope.params={ 'introduction':$scope.document.introduction,//简介 'keyPackage':$scope.document.keyPackage,//可能查询的关键字 'starGrade':$scope.document.starGrade,//星级 'classificationId':$scope.document.classificationId,//文件的id 'filePath':$scope.fileId,//文件的路径 'docName':$scope.document.fileName,//文件的名字 'author':$scope.document.author, 'unit':$scope.document.unit, 'writeDate':$scope.document.writeDate?$scope.document.writeDate.format("yyyy-MM-ddhh:mm:ss"):$scope.document.writeDate, 'jh':$scope.document.jh, 'id':$scope.document.id }; HttpService.post("/server/search/submit",$scope.params).then(function(data){ $('#documentOprModal').modal('hide'); //$("#contTable").bootstrapTable('refresh'); console.error("提交文件信息成功"); },function(response){ //ToastService.alert("提示","提交文件信息出错","warning"); console.error("提交文件信息出错"); }); } } ]) })(angular);
第三部编写后台上传文件和提交表单的代码
packagecom.shiwen.yitihui.server.controller; importjava.io.File; importjava.util.Date; importjava.util.HashMap; importjava.util.Map; importjava.util.UUID; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.web.bind.annotation.PostMapping; importorg.springframework.web.bind.annotation.RequestBody; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RestController; importorg.springframework.web.multipart.MultipartFile; importcom.shiwen.yitihui.common.Snowflake; importcom.shiwen.yitihui.domain.DocClassification; importcom.shiwen.yitihui.domain.DocType; importcom.shiwen.yitihui.domain.DocumentFile; importcom.shiwen.yitihui.domain.FileEntity; importcom.shiwen.yitihui.server.service.DocumentFileService; /** *@authorwangjie: *@version创建时间:2019年8月26日上午11:54:22 *@Description类描述: */ @RestController @RequestMapping("/search") publicclassUploadFileController{ @Autowired privateDocumentFileServicedfservice; privateStringuploadPath="E://file"; /** *上传文件 *@paramfile *@return */ @PostMapping("/upload") publicMapuploadFile(MultipartFilefile){ Map map=newHashMap (); try{ //文件的对象 FileEntityfEntity=newFileEntity(); Stringuuid=UUID.randomUUID().toString(); //文件的id fEntity.setId(uuid.replaceAll("-",""));//String.valueOf(Snowflake.getNextKey())); //文件的名字 fEntity.setFileName(file.getOriginalFilename()); //上传文件的时间 fEntity.setUploadTime(newDate()); //上传者 fEntity.setUploadBy("admin"); //文件的后缀 Stringsuffix=fEntity.getFileName().substring(fEntity.getFileName().indexOf(".")); //文件存放的完整路径 fEntity.setFinePathName(uploadPath+File.separator+fEntity.getId()+suffix); //文件的类型 fEntity.setDocType(newDocType()); //设置文件的类型 fEntity.getDocType().setId(getDocTypeId(fEntity.getFileName())); //创建文件的对象 FilenewFile=newFile(fEntity.getFinePathName()); //上传文件 file.transferTo(newFile); map.put("result","success"); map.put("fileId",fEntity.getId()); }catch(Exceptione){ // e.printStackTrace(); map.put("result","fail"); } returnmap; } /** *提交表单 *@paramdf *@return */ @PostMapping("/submit") publicMap submitFileInfo(@RequestBodyDocumentFiledf){ Map map=newHashMap (); try{ if(df.getId()==null||df.getId().isEmpty()||df.getId()==""){ df.setId(String.valueOf(Snowflake.getNextKey())); } Stringsuffix=df.getDocName().substring(df.getDocName().indexOf(".")); df.setFilePath(uploadPath+File.separator+df.getFilePath()+suffix); df.setUploadBy("admin");//用户名称df.setUploadTime(newjava.util.Date()); df.setUploadTime(newDate()); df.setDownloadNumber(0L); df.setHeat(0L); df.setRelated(20); df.setDocType(newDocType()); df.getDocType().setId(getDocTypeId(suffix)); df.setClassification(newDocClassification()); df.getClassification().setId(df.getClassificationId()); dfservice.save(df); map.put("result","success"); }catch(Exceptione){ //e.printStackTrace(); map.put("result","fail"); } returnmap; } privateIntegergetDocTypeId(StringfileName){ if(fileName.contains(".doc")){ return1; }elseif(fileName.contains(".xls")){ return2; }elseif(fileName.contains(".pdf")){ return3; }elseif(fileName.contains(".ppt")){ return4; }else{ return5; } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。