上传图片
controller类
// 允许上传的格式 图片形式 private static final String[] IMAGE_TYPE = new String[]{".bmp", ".jpg", ".jpeg", ".png"}; /** * 单个图片上传 */ @PostMapping("/uploadImg") public AjaxResult uploadImg(@RequestParam("file") MultipartFile file, HttpServletRequest request) { boolean isFlag = false; for (String type : IMAGE_TYPE) { if (org.springframework.util.StringUtils.endsWithIgnoreCase(file.getOriginalFilename(), type)) { isFlag = true; break; } } if (isFlag) { PicUploadResult picUploadResult = productDisplayService.uplodadImg(file, request); boolean isLegal = picUploadResult.isLegal(); if (isLegal) { Map resMap = new HashMap<>(); resMap.put("imgPath", picUploadResult.getImgPath()); return AjaxResult.success(resMap); } else { return AjaxResult.error("图片上传有误"); } } else { return AjaxResult.error("上传的图片格式必须为:bmp,jpg,jpeg,png"); } } /** * 多个图片上传 */ @PostMapping("/uploadManyImg") public AjaxResult uploadManyImg(@RequestParam("files") MultipartFile[] files, HttpServletRequest request) { boolean isFlag = false; for (MultipartFile uploadFile : files) { for (String type : IMAGE_TYPE) { if (org.springframework.util.StringUtils.endsWithIgnoreCase(uploadFile.getOriginalFilename(), type)) { isFlag = true; break; } } } if (isFlag) { PicUploadResult picUploadResult = productDisplayService.uploadManyImg(files, request); boolean isLegal = picUploadResult.isLegal(); if (isLegal) { Map resMap = new HashMap<>(); resMap.put("imgPaths", picUploadResult.getImgPahts()); return AjaxResult.success(resMap); } else { return AjaxResult.error("图片上传有误"); } } else { return AjaxResult.error("上传的图片格式必须为:bmp,jpg,jpeg,png"); } }
实现方法
//单图片上传 public PicUploadResult uplodadImg(MultipartFile multipartFile, HttpServletRequest request) { return uploadImgMethod(multipartFile, request); } //多图片上传 public PicUploadResult uploadManyImg(MultipartFile[] uploadFile, HttpServletRequest request) { List<String> imgPaths = new ArrayList<>(); for (MultipartFile multipartFile : uploadFile) { PicUploadResult picUploadResult = uploadImgMethod(multipartFile, request); if(picUploadResult.isLegal()){ imgPaths.add(picUploadResult.getImgPath()); }else{ return picUploadResult; } } PicUploadResult picUploadResult = new PicUploadResult(); picUploadResult.setLegal(true); picUploadResult.setImgPahts(imgPaths); return picUploadResult; } /** * 上传图片方法类 * @param multipartFile * @param request * @return */ private PicUploadResult uploadImgMethod(MultipartFile multipartFile, HttpServletRequest request) { PicUploadResult picUploadResult = new PicUploadResult(); if (multipartFile.isEmpty()) { //返回选择文件提示 picUploadResult.setLegal(false); return picUploadResult; } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd/"); String format = sdf.format(new Date()); //存放上传文件的文件夹 File file = new File(baseFilePath + format); logger.info("-----------存放上传文件的文件夹【" + file + "】-----------"); logger.info("-----------输出文件夹绝对路径 -- 这里的绝对路径是相当于当前项目的路径而不是“容器”路径【" + file.getAbsolutePath() + "】-----------"); if (!file.isDirectory()) { //递归生成文件夹 file.mkdirs(); } //获取原始的名字 original:最初的,起始的 方法是得到原来的文件名在客户机的文件系统名称 String oldName = multipartFile.getOriginalFilename(); logger.info("-----------文件原始的名字【" + oldName + "】-----------"); String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."), oldName.length()); logger.info("-----------文件要保存后的新名字【" + newName + "】-----------"); try { //构建真实的文件路径 File newFile = new File(file.getAbsolutePath() + File.separator + newName); //转存文件到指定路径,如果文件名重复的话,将会覆盖掉之前的文件,这里是把文件上传到 “绝对路径” multipartFile.transferTo(newFile); String filePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/picbook/" + UPLOAD_PATH_PREFIX + format + newName; logger.info("-----------【" + filePath + "】-----------"); picUploadResult.setLegal(true); picUploadResult.setImgPath(filePath); return picUploadResult; } catch (Exception e) { e.printStackTrace(); } picUploadResult.setLegal(false); return picUploadResult; }