一、接收前端图片并保存并为前端返回一个图片路径.
@RestController @RequestMapping("/upload") public class UploadImgController { @Autowired(required = false) private ResourceLoader resourceLoader; @Value(value = "/Users/user/Java/Upload/ServerPro") private String uploadPath; /** * 时间格式化 */ private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd/"); @PostMapping("/uploadImg") public Result uploadFile(@RequestParam("file") MultipartFile multipartFile) { try { if (multipartFile.isEmpty()) { return Result.error("文件为空,请重新选择!"); } // 上传的图片全部保存在 "/Users/fangjinliang/Java/Upload/MyManagerPro/uploadImg/" 目录下 File file = new File(uploadPath); if (!file.exists()) { // 创建完整的目录 file.mkdirs(); } // 获取文件原始名(包含后缀名) String orgName = multipartFile.getOriginalFilename(); // 获取文件名(不包括后缀) String prefixName = orgName.substring(0, orgName.lastIndexOf(".")); // 获取文件后缀名 String suffixName = orgName.substring(orgName.lastIndexOf(".")); // 这是处理后的新文件名 String fileName; if (orgName.contains(".")) { // 示例:avatar.123.png,经过处理后得到:avatar.123_1661136943533.png fileName = prefixName + "_" + System.currentTimeMillis() + suffixName; } else { // 上传的图片没有后缀(这压根就不算是一个正常的图片吧?) return Result.error("上传图片格式错误,请重新选择!"); } String savePath = file.getPath() + File.separator + fileName; File saveFile = new File(savePath); // 将上传的文件复制到指定目录 FileCopyUtils.copy(multipartFile.getBytes(), saveFile); // 返回给前端的图片保存路径;前台可以根据返回的路径拼接完整地址,即可在浏览器上预览该图片 String path = "upload" + File.separator + fileName; if (path.contains("\\")) { path = path.replace("\\", "/"); } return Result.ok().put("data",path); } catch (IOException e) { return Result.error(e.getMessage()); } } }
二、图片资源路径映射.(Mac 需在本地路径前加file:)
@Configuration public class InterceptorConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { //其中/images是访问图片资源的前缀,比如要访问test1.png。则全路径为:http://localhost:端口号/images/test1.png registry.addResourceHandler("/upload/**") .addResourceLocations("file:/Users/user/Java/Upload/ServerPro/");//此处为设置服务端存储图片的路径(前段上传到后台的图片保存位置) } }
三、访问图片
http://localhost:8080/upload/test1.png