Spring boot 中使用OSS上传
一、阿里云选择产品对象存储OSS,并创建 Bucket。
根据需求选择配置,bucket名称需要全局唯一,读写权限选择公开读,用于外部通过url访问到图片资源。
二、在创建的Bucker概览中查看Endpoint,用于外部访问的前缀。
三、集成到springBoot项目中
1、引入依赖
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.2</version> </dependency>
2、上传文件
@PostMapping("/uploadfile") public ResponseEntity<?> postFile(@RequestParam("file") MultipartFile file) throws IOException { String endpoint = ""; //bucket概览中显示的endpoint(有地域差异) String accessKeyId = ""; // 个人的accessKeyId String accessKeySecret = ""; //个人的accessKeySecret(推荐创建RAM子账号进行访问) // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); String fileName = file.getOriginalFilename(); // 获取文件的后缀名 String extName = FileUtil.extName(fileName); FileUtil.mainName(fileName); // 生成上传文件名 String finalFileName = randomFilePath(extName); byte[] bytes = file.getBytes(); // <yourObjectName>表示上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 PutObjectRequest putObjectRequest = new PutObjectRequest("bucketName", finalFileName,new ByteArrayInputStream(bytes) ); // 自己创建的bucket名字 // 上传。 ossClient.putObject(putObjectRequest); // 关闭OSSClient。 ossClient.shutdown(); return new ResponseEntity<>("成功", HttpStatus.OK); } private String randomFilePath(String fileType) { return DateUtil.format(new Date(), NORM_MONTH_PATTERN)+ IdUtil.simpleUUID() + "." + fileType; }
其中获取文件后缀名使用hutool工具类,hutool包含了很多常用的工具类,引入依赖
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>4.3.1</version> </dependency>
3、查看accessKeyId ,accessKeySecret 。
在控制台选择右侧Access Key。