文件上传下载 oss
什么是阿里云OSS
阿里云对象存储(Alibaba Cloud Object Storage Service,简称OSS)是阿里云提供的海量、安全、低成本、高可靠的云存储服务。用户可以通过简单的API接口在任何时间、任何地点上传和下载数据,适用于图像、音视频、文档、网站等各种类型的数据存储和分发场景。
阿里云OSS的优点
高可靠性:OSS采用了多副本存储和容灾备份机制,确保数据的高可靠性和持久性。
安全性:支持多种安全策略,如访问控制、加密传输等,保障数据的安全性。
弹性扩展:支持按需存储和弹性扩展,用户可以根据实际需求灵活调整存储容量。
低成本:OSS的存储费用低廉,且支持按量付费模式,使用户能够根据实际使用量付费
controller层:
// An highlighted block
@Data
@RestController
@RequestMapping("/sys/oss")
public class OssController {
@Value("${aliyun.oss.bucketName}")
private String bucketName;
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
/**
* 文件上传
*
* @param bytes :传入的文件要转为byte[]
* @param newName :表示在oss中存储的文件名字。
*/
@PostMapping("/import")
public String upload1(@RequestParam MultipartFile file) throws IOException {
byte[] bytes=file.getBytes();
String originalFilename = file.getOriginalFilename();
String type = FileUtil.extName(originalFilename);
String uuid = IdUtil.fastSimpleUUID();
String fileUUID = uuid + StrUtil.DOT + type;
System.out.println(bytes+"hndshv");
OSS ossClient = new OSSClientBuilder().build(this.endpoint, this.accessKeyId, this.accessKeySecret);
try {
// 创建PutObject请求。
ossClient.putObject(this.bucketName, fileUUID, new ByteArrayInputStream(bytes));
} catch (Exception oe) {
oe.printStackTrace();
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
//文件访问路径规则 https://BucketName.Endpoint/ObjectName
StringBuilder stringBuilder = new StringBuilder("https://");
stringBuilder
.append(bucketName)
.append(".")
.append(endpoint)
.append("/")
.append(fileUUID);
String url=stringBuilder.toString();
return url;
}
}
application.yml
# 阿里云oss
aliyun:
oss:
endpoint: "自己的阿里云endpoint"
accessKeyId: "自己的阿里云accessKeyId"
accessKeySecret: "自己的阿里云accessKeySecret"
bucketName: "自己的阿里云bucketName"