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();
//获取前端上传的文件列表
Listfiles=((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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。