java">try {// 获取文件后缀名String originalFilename = file.getOriginalFilename();String fileExtension = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();// 判断文件类型并设置对应的字段和保存路径String filePath;String fieldType;if (fileExtension.equals(".exe")) {filePath = saveFileAndGetPath(file, param, "exe");fieldType = "Downloadpath";} else if (fileExtension.equals(".doc") || fileExtension.equals(".docx")) {filePath = saveFileAndGetPath(file, param, "word");fieldType = "Manualpath";} else if (fileExtension.equals(".jpg") || fileExtension.equals(".jpeg") || fileExtension.equals(".png") || fileExtension.equals(".gif")) {filePath = saveFileAndGetPath(file, param, "img");fieldType = "Imgurl";} else {return ResultVo.error("不支持的文件类型");}// 获取id参数String id = param.getStr("id");Plugins plugins = pluginsService.getById(id);// 更新字段switch (fieldType) {case "Downloadpath":plugins.setDownloadpath(filePath);break;case "Manualpath":plugins.setManualpath(filePath);break;case "Imgurl":plugins.setImgurl(filePath);break;}// 更新数据库pluginsService.updateById(plugins);// 返回成功信息ResourceVo vo = new ResourceVo();vo.setLocation(filePath);return ResultVo.success(vo);} catch (IOException e) {throw Exceptions.Business.ResourceNotSaved("文件保存失败", e);}
根据上传的后缀名来判断
java">private String saveFileAndGetPath(MultipartFile file, JSONObject param, String fileType) throws IOException {// 获取id参数String id = param.getStr("id");String vcode = pluginsMapper.findVcode(id);// 获取资源根路径String resourcesPath = sysconfService.getSysConfByName("resourcesPath");if (!StringUtils.hasText(resourcesPath)) {throw Exceptions.Business.ResourceNotSaved("资源根路径没有配置或值为空,请先正确配置 resourcesPath");}// 构建文件存储路径String subPath = "/" + fileType + "/";String datetime = DateUtils.getStringDateTime();String fileExtension = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")).toLowerCase();String fileName = id + fileExtension;String filePath = resourcesPath + "/plugin" + subPath + datetime + "/" + fileName;Path path = Paths.get(filePath);// 确保目录存在Files.createDirectories(path.getParent());// 保存文件Files.write(path, file.getBytes());return filePath;}
然后执行文件保存方法