SpringBoot用户头像上传
1、上传到本地服务器
controller层主要以MultipartFile接收即可,这里返回给前端的该文件保存后的相对路径
@RequestMapping(value = "/application/file/upload", method = RequestMethod.POST) public Object uoloadFile(@RequestParam("file") MultipartFile file) { return buildMessage(ResultModel.SUCCESS, appService.uoloadFile(file)); }
2.下面看下service层upload的具体实现:
public String uploadFile(MultipartFile file) throws NotifyException { // 首先校验图片格式 List<String> imageType = Lists.newArrayList("jpg","jpeg", "png", "bmp", "gif"); // 获取文件名,带后缀 String originalFilename = file.getOriginalFilename(); // 获取文件的后缀格式 String fileSuffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1).toLowerCase(); if (imageType.contains(fileSuffix)) { // 只有当满足图片格式时才进来,重新赋图片名,防止出现名称重复的情况 String newFileName = UUIDTypeHandler.createUUID() + originalFilename; // 该方法返回的为当前项目的工作目录,即在哪个地方启动的java线程 String dirPath = System.getProperty("user.dir"); String path = File.separator + "uploadImg" + File.separator + newFileName; File destFile = new File(dirPath + path); if (!destFile.getParentFile().exists()) { destFile.getParentFile().mkdirs(); } try { file.transferTo(destFile); // 将相对路径返回给前端 return path; } catch (IOException e) { log.error("upload pic error"); return null; } } else { // 非法文件 log.error("the picture's suffix is illegal"); throw new NotifyException(ExceptionConstants.FILE_UPLOAD_ERROR); } }
上述代码是以上传图片为例,上传文件同理,只要去掉图片格式验证即可