本文包括阿里云对象存储OSS入门使用,上传与下载以及简单测试案例的实现。
首先,在阿里云中找到对象存储OSS
点击侧边栏的Bucket列表,创建Bucket列表
根据需求选择配置
创建完成后,点击进入查看概览,找到对应的Endpoint,在后面的测试中需要用到
所需要的access key可以通过点击头像,accesskey管理获得
为了保证账号的安全,这里使用子用户accesskey
进入RAM 访问控制,点击侧边栏身份管理中的用户,然后创建用户。需勾选Open API调用访问
进入创建好的子用户,在下方点击创建accesskey
将生成的keyid与keySecret保存好,后面测试中需要使用
然后进行SDK测试,导入Maven依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.0</version>
</dependency>
上传文件
void upload() {
// 按照参数填写
// 填写endpoint
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 填写accessKeyId
String accessKeyId = "yourAccessKeyId";
// 填写accessKeySecret
String accessKeySecret = "yourAccessKeySecret";
// 填写Bucket名称
String bucketName = "bucket";
// 填写上传到的完整路径
String objectName = "test.txt";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
String content = "Hello OSS";
//上传
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
进入文件管理查看,上传成功
下载
@Test
void download() {
// 按照参数填写
// 填写endpoint
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 填写accessKeyId
String accessKeyId = "yourAccessKeyId";
// 填写accessKeySecret
String accessKeySecret = "yourAccessKeySecret";
// 填写Bucket名称
String bucketName = "bucket";
// 填写上传到的完整路径
String objectName = "test.txt";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 调用ossClient.getObject返回一个OSSObject实例,该实例包含文件内容及文件元信息。
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
// 调用ossObject.getObjectContent获取文件输入流,可读取此输入流获取其内容。
InputStream content = ossObject.getObjectContent();
if (content != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
while (true) {
String line = reader.readLine();
if (line == null) break;
System.out.println("\n" + line);
}
content.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
下载成功
详细操作可以参考官方文档Java SDK快速入门 - 对象存储 OSS - 阿里云
文件上传应用实例
本案例基于spring boot 2.6.6
先写一个Service类, 逻辑与上面的操作类似,这里使用MultipartFile上传文件,在上传完成后返回图片地址
@Service
public class OssServiceImpl implements OssService {
@Override
public String uploadFile(MultipartFile multipartFile) {
//这里根据自己的参数设置
String endpoint = ”“;
String accessKeyId = ”“;
String accessKeySecret = ”“;
String bucketName = ”“;
// 创建OSSClient实例
OSS oss = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
//获取文件输入流
InputStream inputStream = multipartFile.getInputStream();
//获取文件名
String originalFilename = multipartFile.getOriginalFilename();
//设置文件路径,根据日期区分文件夹
String dateTime = new SimpleDateFormat("yyyy/MM/dd").format(new Date());
//拼接上传路径
originalFilename = dateTime + "/" + originalFilename;
//上传
oss.putObject(bucketName, originalFilename, inputStream);
//返回上传的文件的访问地址
String url = "https://" + bucketName + "." + endpoint + "/" + originalFilename;
return url;
} catch (IOException e) {
e.printStackTrace();
return null;
}finally{
//关闭oss
if (oss != null) {
oss.shutdown();
}
}
}
}
一个简单的Controller
@RestController
@CrossOrigin
@RequestMapping("/oss")
public class OssController {
@Autowired
private OssService ossService;
@PostMapping("upload")
public String uploadFile(MultipartFile multipartFile){
//调用service类
return ossService.uploadFile(multipartFile);
}
}
测试图片上传
通过返回的URl即可访问图片,在控制台中也能找到上传的文件
注意:使用OSS服务,当流量或存储空间达到一定数量时会产生费用,大家可以参考文档中的收费标准。