java文件上传
文件上传有很多种格式
第一种:Base64:
笔记直接上代码:
@PostMapping("/fileUploading")
public AjaxResult uploadIng(@RequestParam(required = false, value = "fileStr") String fileStr, HttpServletRequest request) {
Base64DecodedMultipartFile base64DecodedMultipartFile = null;
if (null != fileStr && !fileStr.isEmpty()) {
base64DecodedMultipartFile = (Base64DecodedMultipartFile) Base64StrToImage.base64MutipartFile(fileStr);
List<String> stringList = null;
if (null != base64DecodedMultipartFile && !base64DecodedMultipartFile.equals("")) {
FileUploading fileUploading = new FileUploading();
try {
stringList = fileUploading.phtoUpload(base64DecodedMultipartFile, request);
} catch (IOException e) {
e.printStackTrace();
return AjaxResult.error("信息异常"+e, 1);
}
}
return AjaxResult.successState("上传成功", 0, stringList);
} else {
return AjaxResult.error("信息异常", 1);
}
}
public List<String> phtoUpload(Base64DecodedMultipartFile base64DecodedMultipartFile, HttpServletRequest request)throws IllegalStateException, IOException {
List<String> list = new ArrayList<>();
if (base64DecodedMultipartFile != null && !base64DecodedMultipartFile.isEmpty()) {
list = saveFileBase64(base64DecodedMultipartFile, list, request);
} else {
System.out.println("未找到相对应的图片");
return null;
}
return list;
}
private List<String> saveFileBase64(Base64DecodedMultipartFile file, List<String> list, HttpServletRequest request)throws IllegalStateException, IOException {
if (file != null) {// 判断上传的文件是否为空
String path = null;// 文件路径
String type = null;// 文件类型
String url = "";
String fileName = file.getOriginalFilename();// 文件原名称
System.out.println("上传的文件原名称:" + fileName);
// 判断文件类型
type = fileName.indexOf(".") != -1 ? fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()) : null;
if (type != null) {// 判断文件类型是否为空
if ("JPEG".equals(type.toUpperCase()) || "GIF".equals(type.toUpperCase()) || "PNG".equals(type.toUpperCase()) || "JPG".equals(type.toUpperCase())) {
String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath()+"/upload";//存储路径
// 项目在容器中实际发布运行的根路径
String realPath = request.getSession().getServletContext()
.getRealPath("/upload/");
// 自定义的文件名称
String trueFileName = new Date().getTime()+"_"+file.getOriginalFilename();
// 设置存放图片文件的路径
path = realPath + trueFileName;
System.out.println("存放图片文件的路径:" + path);
File saveDir = new File(path);
if (!saveDir.getParentFile().exists())
saveDir.getParentFile().mkdirs();
// 转存文件到指定的路径
file.transferTo(saveDir);
url = returnUrl +"/"+trueFileName;
list.add(url);
System.out.println("文件成功上传到指定目录下");
} else {
System.out.println("不是我们想要的文件类型,请按要求重新上传");
return null;
}
} else {
System.out.println("文件类型为空");
return null;
}
} else {
System.out.println("没有找到相对应的文件");
return null;
}
return list;
}
第二种使用 MultipartFile:
@PostMapping(value = "/photoUpload")
public FileDataResult<Object> photoUpload(MultipartFile file, HttpServletRequest request, HttpServletResponse response, HttpSession session) throws IllegalStateException, IOException {
FileDataResult<Object> resultData = new FileDataResult<>();
if (file != null) {// 判断上传的文件是否为空
String path = null;// 文件路径
String type = null;// 文件类型
String url = "";
String fileName = file.getOriginalFilename();// 文件原名称
System.out.println("上传的文件原名称:" + fileName);
// 判断文件类型
type = fileName.indexOf(".") != -1 ? fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()) : null;
if (type != null) {// 判断文件类型是否为空
if ("GIF".equals(type.toUpperCase()) || "PNG".equals(type.toUpperCase()) || "JPG".equals(type.toUpperCase())|| "JPEG".equals(type.toUpperCase())|| "MP4".equals(type.toUpperCase())|| "3GP".equals(type.toUpperCase()) ) {
String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath()+"/upload";//存储路径
// 项目在容器中实际发布运行的根路径
String realPath = request.getSession().getServletContext()
.getRealPath("/upload/");
// 自定义的文件名称
String trueFileName = new Date().getTime()+"_"+file.getOriginalFilename();
// 设置存放图片文件的路径
path = realPath + trueFileName;
System.out.println("存放图片文件的路径:" + path);
File saveDir = new File(path);
if (!saveDir.getParentFile().exists())
saveDir.getParentFile().mkdirs();
// 转存文件到指定的路径
file.transferTo(saveDir);
url = returnUrl +"/"+trueFileName;
resultData.setData(url);
System.out.println("文件成功上传到指定目录下");
} else {
System.out.println("不是我们想要的文件类型,请按要求重新上传");
return null;
}
} else {
System.out.println("文件类型为空");
return null;
}
} else {
System.out.println("没有找到相对应的文件");
return null;
}
return resultData;
}
第三种 HttpServletRequest:
@RequestMapping("/testfile")
@SuppressWarnings({"unchecked","rawtypes"})
public FileDataResult<Object> testFile( HttpServletRequest request,HttpServletResponse resp,HttpSession session) throws IOException {//value的名字一定要叫upfile,这是ueditor写好的参数名称
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获得上传的文件(根据前台的name名称得到上传的文件)
MultiValueMap<String, MultipartFile> multiValueMap = multipartRequest.getMultiFileMap();
List<MultipartFile> upfile = multiValueMap.get("file");
FileDataResult<Object> fileUploading= null;
if(!upfile.isEmpty()){
for (MultipartFile file : upfile) {
fileUploading= new FileUploadingController().photoUpload(file,request,resp,session);
}
}
return fileUploading;
}
第三种就是通过request种获取file ,然后可以通过第二种方式将file 上传上去;