阿里云对象存储OSS简单使用

文章目录

概念

基本概念

阿里云对象存储 OSS是一款海量、安全、低成本、高可靠的云存储服务,提供最高可达 99.995 % 的服务可用性。而且提供了多种存储类型,降低我们的存储成本。

Bucket

Bucket是管理文件的存储空间。可以创建多个Bucket达到隔离文件的目的

准备工作

访问该链接 控制台快速入门,按步骤执行以下操作

控制台操作对象存储OSS

  • 从首页进入控制台

  • 创建存储空间

  • 直接上传文件

  • 新建目录后并上传文件

  • 下载文件

  • 删除文件

Java客户端操作对象存储OSS

  • 创建AccessKey


  • 创建一个maven工程
  • 配置oss依赖
xml 复制代码
<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.15.1</version>
</dependency>

如果是Java9环境,则需要引入以下依赖

xml 复制代码
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.3</version>
</dependency>
  • 创建Bucket
java 复制代码
   /**
     * 测试创建Bucket
     */
    public static void testCreateBucket() {
        // Endpoint以华北2(北京)为例,其它Region请按实际情况自己指定。
        String endpoint = "oss-cn-beijing.aliyuncs.com";
        // 使用代码嵌入的RAM用户的访问密钥配置访问凭证。
        String accessKeyId = ""; // 你的accessKeyId
        String accessKeySecret = ""; // 你的accessKeySecret
        CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret);
        // 填写Bucket名称,例如examplebucket。Bucket名称在OSS范围内必须全局唯一。
        String bucketName = "";  // 你的Bucket
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
        try {
            // 创建存储空间。
            ossClient.createBucket(bucketName);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
  • 测试上传文件
java 复制代码
    /**
     * 测试上传图片
     */
    public static void testUploadFile() {
        // Endpoint以华北2(北京)为例,其它Region请按实际情况自己指定。
        String endpoint = "oss-cn-beijing.aliyuncs.com";
        // 使用代码嵌入的RAM用户的访问密钥配置访问凭证。
        String accessKeyId = ""; // 你的accessKeyId
        String accessKeySecret = ""; // 你的accessKeySecret
        CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret);
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "";  // 你的Bucket
        // 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
        String objectName = "20240604/测试.png";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // 上传一张图片,指定本地图片路径
            ossClient.putObject(bucketName, objectName, new File("C:\\Users\\cmbsysadmin\\Desktop\\测试图片\\测试.png"));
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
  • 测试下载文件
java 复制代码
   /**
     * 测试下载文件
     */
    public static void testDownFile() {
        // Endpoint以华北2(北京)为例,其它Region请按实际情况自己指定。
        String endpoint = "oss-cn-beijing.aliyuncs.com";
        // 使用代码嵌入的RAM用户的访问密钥配置访问凭证。
        String accessKeyId = ""; // 你的accessKeyId
        String accessKeySecret = ""; // 你的accessKeySecret
        CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret);
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "";  // 你的Bucket
        // 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
        String objectName = "20240604/测试.png";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // 调用ossClient.getObject返回一个OSSObject实例,该实例包含文件内容及文件元数据。
            OSSObject ossObject = ossClient.getObject(bucketName, objectName);
            // 调用ossObject.getObjectContent获取文件输入流,可读取此输入流获取其内容。
            // 将文件下载到指定目录
            try (InputStream content = ossObject.getObjectContent();
                 FileOutputStream fileOutputStream = new FileOutputStream("D:\\upload\\testFile\\测试.png");) {
                byte[] buffer = new byte[1024];
                int length = 0;
                while ((length = content.read(buffer)) != -1) {
                    fileOutputStream.write(buffer, 0, length);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
  • 测试删除文件
java 复制代码
    /**
     * 测试删除文件
     */
    public static void testDeleteFile() {
        // Endpoint以华北2(北京)为例,其它Region请按实际情况自己指定。
        String endpoint = "oss-cn-beijing.aliyuncs.com";
        // 使用代码嵌入的RAM用户的访问密钥配置访问凭证。
        String accessKeyId = ""; // 你的accessKeyId
        String accessKeySecret = ""; // 你的accessKeySecret
        CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret);
        // 填写Bucket名称,例如examplebucket。
        String bucketName = ""; // 你的Bucket
        // 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
        String objectName = "20240604/测试.png";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // 删除文件。
            ossClient.deleteObject(bucketName, objectName);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }

参考来源

相关推荐
Qimooidea12 小时前
祁木 CAD Translator:基于阿里云百炼与 DeepSeek 的图纸翻译实战
阿里云·云计算
Elastic 中国社区官方博客16 小时前
如何为阿里云 Elasticsearch 创建推理端点,连接器,Workflow 并写入数据
大数据·人工智能·elasticsearch·搜索引擎·阿里云·云计算·全文检索
Xiangchu_16 小时前
安徽硅胶厂的转型困局:从家电到汽车,卡在哪
经验分享·python·阿里云·eclipse·汽车·制造
Database_Cool_17 小时前
实时计数器/排行榜首选:阿里云 Tair 高并发数据结构实践
数据结构·数据库·阿里云·云计算
小白考证进阶中1 天前
阿里云认证重要通知(Clouder+ACX职业岗位)
阿里云·云计算·阿里云acp报名·阿里云acp备考·阿里云aca证书·阿里云aca大模型·阿里云aca报名
spider_xcxc1 天前
告别单点故障:阿里云CLB负载均衡从入门到实战
阿里云·云计算·负载均衡
阿里云云原生1 天前
阿里云可观测 2026 年 6 月产品动态
阿里云·云计算
Database_Cool_2 天前
内存数据库持久化方案:阿里云 Tair 持久内存型数据不丢失
数据库·阿里云
spider_xcxc2 天前
阿里云NAS配置完全指南:从概念到实战
阿里云·云计算