阿里云OSS(Object Storage Service)是一个安全、稳定、可扩展的云端对象存储服务,可用于文件存储、图片存储、视频存储等多种场景,在全球范围内为数百万个客户提供业务支持
依赖
<!--阿里OSS-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.16.3</version>
</dependency>
上传示例
/**
* 文件上传(暂支持图片)
*/
@PostMapping("/file/upload")
public Result<String> fileUpload(@RequestParam("file") MultipartFile file) throws IOException {
// 文件为空
Assert.isTrue(!file.isEmpty(), "图片不能为空");
// 文件格式限制
Assert.isTrue(Objects.requireNonNull(file.getOriginalFilename()).contains("png") ||
Objects.requireNonNull(file.getOriginalFilename()).contains("gif") ||
Objects.requireNonNull(file.getOriginalFilename()).contains("jpg"), "仅支持png/jpg/gif图片");
// 文件名
String fileName = new ObjectId().toString();
// 文件后缀
String suffix = Objects.requireNonNull(file.getOriginalFilename()).substring(file.getOriginalFilename().lastIndexOf("."));
String endpoint = "https://oss-cn-shanghai.aliyuncs.com";
String accessKeyId = "LTAI5tQC6dX28tEDikgw1o73";
String accessKeySecret = "sE1Nrw1evm0eTyrJ3c1R1kWVaFjNMr";
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
String bucketName = "fan-demo-com";
String format = new SimpleDateFormat("yyyyMMdd").format(new Date());
String objectName = format + "/" + fileName + suffix;
ossClient.putObject(bucketName, objectName, file.getInputStream());
ossClient.shutdown();
// 返回图片请求路径
return Result.data("添加成功", endpoint.replace("//", "//" + bucketName + ".") + "/" +objectName);
}
地址文档
https://help.aliyun.com/document_detail/31837.htm?spm=a2c4g.11186623.0.0.72912ff2rGtGKA#concept-zt4-cvy-5db