一、接收前端图片并保存并为前端返回一个图片路径.
@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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2018-10-23 iOS 开发之 KVC - setValuesForKeysWithDictionary 解析