案例-18.文件上传-阿里云OSS-集成
- 创业
- 2025-08-29 23:27:01

一.分析 要想将阿里云oss集成到新增员工的功能中,必须要设计文件上传的接口UploadController。首先前端给接口上传接口需要接收请求的图片,然后接口再将图片上传到阿里云oss中存储起来,接着接口从阿里云oss中获取图片的url并返回给前端,前端在将获取到的url文件渲染展示出来。 二.UploadController接口文档 响应数据是一个url路径,浏览器拿到该路径即可渲染展示出来该文件。 三.接口的开发 1.首先引入阿里云OSS文件上传的工具类 package com.gjw.util; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import java.io.*; import java.util.UUID; /** * 阿里云 OSS 工具类 */ @Data @Component // 使用Component实现控制反转(该工具类不属于controller,service,mapper/Dao) public class AliOSSUtils { private String endpoint = ""; // 选择自己的 private String accessKeyID = ""; // 选择自己的 private String accessKeySecret = ""; // 选择自己的 private String bucketName = ""; // 选择自己的 @Autowired private AliOSSProperties aliOSSProperties; /** * 实现上传图片到OSS */ public String upload(MultipartFile file) throws IOException { // 获取上传的文件的输入流 InputStream inputStream = file.getInputStream(); // 避免文件覆盖 String originalFilename = file.getOriginalFilename(); String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf(".")); //上传文件到 OSS OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); ossClient.putObject(bucketName, fileName, inputStream); //文件访问路径 String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName; // 关闭ossClient ossClient.shutdown(); return url;// 把上传到oss的路径返回 } } String originalFilename = file.getOriginalFilename();获取到文件的原始名字 又构建了新的名字:String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));此处代码逻辑和上篇博客中的一模一样。 然后构建ossClient对象调用putObject方法进行文件上传。 文件上传完毕后下面组装文件的访问路径,就是将bucket拼接到endpoint,最后在拼接上文件的名字即可。 最后将url返回即可。 2.图片接口开发 /** * 图片上传接口: * 用于将图片上传到云服务器 */ package com.gjw.controller; import com.gjw.pojo.Result; import com.gjw.util.AliOSSUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.util.UUID; @Slf4j @RestController public class UploadController { @Autowired // 依赖注入 private AliOSSUtils aliOSSUtils; /*@PostMapping("/upload") // public Result result(String username, Integer age, @RequestParam ("image")MultipartFile file) { public Result result(String username, Integer age, MultipartFile image) throws IOException { log.info("文件上传:{},{},{}",username,age,image); System.out.println(image.getName()); // 获取表单项的名字 String originalFilename = image.getOriginalFilename(); // 获取原始文件名 // 获取原始文件后缀 int index = originalFilename.lastIndexOf("."); String substring = originalFilename.substring(index); // 通过Uuid获取到唯一文件名 String uuid = UUID.randomUUID().toString(); String newFileName = uuid + substring; // 将文件存储在服务器的磁盘目录中 image.transferTo(new File("D:\\tlias-file\\image\\" + newFileName)); return Result.success(); }*/ @PostMapping("/upload") public Result result(MultipartFile image) throws IOException { log.info("文件上传,文件名:{}",image.getOriginalFilename()); String url = aliOSSUtils.upload(image); log.info("上传文件的url为:{}",url); return Result.success(url); // 将图片上传后的url返回,用于浏览器的展示 } } 总结
案例-18.文件上传-阿里云OSS-集成由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“案例-18.文件上传-阿里云OSS-集成”