java上传图片到服务器,并返回可访问图片的url地址
创始人
2024-11-04 06:33:01

在日常开发项目中,图片上传下载是经常调用的接口也是必不可少的。

首先调用文件上传接口,将文件上传到自己想要上传的本地地址中,在这里方便演示,就选取将图片上传到java项目的resource路径下upload文件中。

controller层接口代码 :
/**  * 图片上传到resource路径下 upload文件中  * @param file  * @return  * @throws IOException  */ @PostMapping("/uploadImage") public String uploadImage(MultipartFile file) throws IOException {     //获取上传图片全名     String filename = file.getOriginalFilename();     //截取图片后缀名     String s = filename.substring(filename.lastIndexOf("."));     //使用UUID拼接文件后缀名 防止文件名重复 导致被覆盖     String replace = UUID.randomUUID().toString().replace("-", "")+s;     //创建文件 此处文件路径为项目resource目录下upload文件中 注:不知道resource路径 可以右键resource文件选择Cpoy Path/Reference 后点击选择Path From repository Root即可     File file1 = new File(System.getProperty("user.dir") + "/springboot/src/main/resources/upload/" + replace);     //判断文件的父文件夹是否存在 如果不存在 则创建     if (!file1.getParentFile().exists()){         file1.getParentFile().mkdirs();     }     file.transferTo(file1);     System.out.println(file1.getAbsolutePath());     //返回文件访问路径 这里是在配置类中配置的访问路径,访问项目中的文件需要ip和端口号才能访问到具体的程序     return "http://localhost:9090/upload/"+filename; } 

接着需要配置静态资源过滤器,将你想要的文件访问路径映射为实际图片存储的位置,在这里 就是将返回的访问路径("http://localhost:9090/upload/"+filename)映射为实际存储的位置(UUID.randomUUID().toString().replace("-", "")+s)里:配置类代码如下:

/**  * 配置静态资源过滤器  * @param registry  */ @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) {     //设置访问 addResourceHandler中的虚拟路径 被映射到 addResourceLocations真实路径中     registry.addResourceHandler("/upload/**")             .addResourceLocations("file:"+System.getProperty("user.dir") + "/springboot/src/main/resources/upload/"); 

super.addResourceHandlers(registry);

}

调用接口,上传图片结果如下:

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...