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。


浙公网安备 33010602011771号