springboot实现单文件和多文件上传
本文实例为大家分享了springboot实现单文件/多文件上传的具体代码,供大家参考,具体内容如下
packagecom.heeexy.example.controller; importcom.alibaba.fastjson.JSONObject; importcom.heeexy.example.util.CommonUtil; importorg.springframework.web.bind.annotation.*; importorg.springframework.web.multipart.MultipartFile; importorg.springframework.web.multipart.MultipartHttpServletRequest; importjavax.servlet.http.HttpServletRequest; importjava.io.*; importjava.util.*; @RestController @RequestMapping("/common") publicclassUploadController{ //设置上传文件夹 FileuploadPath=null; //单文件上传 @PostMapping("/upload") publicJSONObjectupload(@RequestParam(value="file",required=false)MultipartFilefile,HttpServletRequestrequest)throwsException{ //定义返回客户端json对象 JSONObjectreturnData=newJSONObject(); //定义处理流对象 BufferedOutputStreamout=null; //将request对象转成JSONObject对象 JSONObjectjsonObject=CommonUtil.request2Json(request); //验证必填字段 CommonUtil.hasAllRequired(jsonObject,"user_id,equi_id,upload_type"); //获取当前用户id Stringuser_id=jsonObject.getString("user_id"); //获取当前设备id Stringequi_id=jsonObject.getString("equi_id"); //获取上传文件的类型1:巡检2:维保 Stringupload_type=jsonObject.getString("upload_type"); //判断上传文件类型并设置前置路径 FileuploadPath=null; StringbasePath="/root/img";//基础文件上传路径 Stringinspection="/inspection";//巡检文件夹路径 Stringmaintenance="/maintenance";//维保文件夹路径 switch(upload_type){ case"1": uploadPath=newFile(basePath+inspection); break; case"2": uploadPath=newFile(basePath+maintenance); break; default: uploadPath=newFile(basePath); } //判断服务器上传文件夹是否存在 if(!uploadPath.exists()){ uploadPath.mkdirs(); } //判断上传的文件是否为空 if(file!=null){ //获取上传文件后缀 Stringhouzhui=file.getOriginalFilename().split("\\.")[1]; //拼接上传文件保存路径(当前用户id+设备id+时间戳.后缀名) Filefil=newFile(uploadPath+"/"+user_id+equi_id+newDate().getTime()+"."+houzhui); try{ //将上传文件保存到服务器上传文件夹目录下 out=newBufferedOutputStream(newFileOutputStream(fil)); out.write(file.getBytes()); out.flush(); out.close(); //返回上传文件的访问路径getAbsolutePath()返回文件上传的绝对路径 returnData.put("message",fil.getName()); }catch(FileNotFoundExceptione){ e.printStackTrace(); returnData.put("message","文件上传失败:"+e.getMessage()); }catch(IOExceptione){ e.printStackTrace(); returnData.put("message","文件上传失败:"+e.getMessage()); }finally{ //关闭处理流 if(out!=null){out.close();} } }else{ returnData.put("message","文件上传失败,文件为空"); } returnCommonUtil.successJson(returnData); } //多文件上传 @PostMapping("/batchUpload") publicJSONObjecthandleFileUpload(HttpServletRequestrequest)throwsException{ //定义返回客户端json对象 JSONObjectreturnData=newJSONObject(); //定义处理流对象,处理文件上传 BufferedOutputStreamstream=null; //定义map存储返回结果集 MapreturnfileMap=newHashMap (); //获取前端上传的文件列表 List files=((MultipartHttpServletRequest)request).getFiles("file"); MultipartFilefile=null; //将request对象转成JSONObject对象 JSONObjectjsonObject=CommonUtil.request2Json(request); //验证必填字段,用户id,设备id,上传文件类型 CommonUtil.hasAllRequired(jsonObject,"user_id,equi_id,upload_type"); //获取当前用户id Stringuser_id=jsonObject.getString("user_id"); //获取当前设备id Stringequi_id=jsonObject.getString("equi_id"); //获取上传文件的类型1:巡检2:维保 Stringupload_type=jsonObject.getString("upload_type"); //判断上传文件类型并设置前置路径 FileuploadPath=null; StringbasePath="/root/img";//基础文件上传路径 Stringinspection="/inspection";//巡检文件夹路径 Stringmaintenance="/maintenance";//维保文件夹路径 switch(upload_type){ case"1": uploadPath=newFile(basePath+inspection); break; case"2": uploadPath=newFile(basePath+maintenance); break; default: uploadPath=newFile(basePath); } //判断服务器上传文件夹是否存在 if(!uploadPath.exists()){ uploadPath.mkdirs(); } //遍历客户端上传文件列表 for(inti=0;i 单文件文件结果
多文件上传结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。