本文包括阿里云对象存储OSS入门使用,上传与下载以及简单测试案例的实现。

首先,在阿里云中找到对象存储OSS

点击侧边栏的Bucket列表,创建Bucket列表

Android 集成阿里OSS 阿里云oss sdk_java

根据需求选择配置 

Android 集成阿里OSS 阿里云oss sdk_spring boot_02

创建完成后,点击进入查看概览,找到对应的Endpoint,在后面的测试中需要用到

Android 集成阿里OSS 阿里云oss sdk_java_03

 所需要的access key可以通过点击头像,accesskey管理获得

Android 集成阿里OSS 阿里云oss sdk_阿里云_04

为了保证账号的安全,这里使用子用户accesskey

进入RAM 访问控制,点击侧边栏身份管理中的用户,然后创建用户。需勾选Open API调用访问

 

Android 集成阿里OSS 阿里云oss sdk_java_05

 进入创建好的子用户,在下方点击创建accesskey

Android 集成阿里OSS 阿里云oss sdk_java_06

将生成的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();
            }
        }
    }

进入文件管理查看,上传成功

Android 集成阿里OSS 阿里云oss sdk_java_07

 下载

@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();
        }
    }

下载成功

Android 集成阿里OSS 阿里云oss sdk_java_08

详细操作可以参考官方文档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);
    }

}

 测试图片上传

Android 集成阿里OSS 阿里云oss sdk_spring boot_09

通过返回的URl即可访问图片,在控制台中也能找到上传的文件 

注意:使用OSS服务,当流量或存储空间达到一定数量时会产生费用,大家可以参考文档中的收费标准。