初学对象存储OSS---学习笔记

文章目录

  • 前言
  • 一、OSS是什么?
    • 下面以一个小故事介绍OSS的作用:
  • 二、怎么使用OSS
    • 1.进入 -----> [阿里云官网](https://www.aliyun.com/)
    • 2.点击进入OSS控制台
    • 3.获取accessKeyId 和 accessKeySecret
    • 4.拿到了accessKeyId 和 accessKeySecret ,就可以直接上代码操作了
    • 4.1.新建桶代码
    • 4.2.写入txt文件并上传到oss代码
    • 4.3.文件下载读取输出到控制台代码
    • 4.4.列举文件
    • 4.5.删除指定文件
  • 三、总结


前言

初学OSS,白嫖了三个月,分享一下学习心得!

在这里插入图片描述


一、OSS是什么?

下面以一个小故事介绍OSS的作用:

从前,有一个小村庄,这个小村庄的人们生活朴素,但是却非常团结。他们的主要收入来源是从周边山林中收集各种野果和草药,然后卖给城市里的商贩。 有一天,村庄里的年轻人听说了互联网和电子商务,他们想利用这个机会来将自己的野果和草药推销到全国各地。然而,他们发现自己没有能力和资源来开发和维护自己的在线商店。
幸运的是,他们听说了阿里云的对象存储(OSS)服务,这个服务可以为他们提供可靠的存储和访问服务,同时还可以自动扩展存储容量,以满足他们日益增长的业务需求。
于是,他们决定使用OSS服务来构建自己的在线商店。他们将自己的产品照片和介绍上传到OSS中,并使用OSS的API来构建自己的网站,然后使用阿里云的负载均衡服务来管理流量,确保他们的网站可以快速响应用户请求。
通过OSS和阿里云的帮助,这个小村庄的年轻人成功地将自己的野果和草药卖到了全国各地,他们的生意日益繁荣。最终,他们甚至能够扩大自己的生产规模,为更多人提供优质的野果和草药,也让更多的人了解和认识这个美丽的小村庄。
故事的结局告诉我们,OSS的作用是提供可靠的存储和访问服务。

二、怎么使用OSS

1.进入 -----> 阿里云官网

在这里插入图片描述

2.点击进入OSS控制台

默认你已经买了,就可以直接进入控制台了:

在这里插入图片描述

3.获取accessKeyId 和 accessKeySecret

关于在OSS控制太的可视化操作这里就不说了,下面是关于怎么使用java代码对oss进行操作

创建Bucket 然后点击你的Bucket列表(桶)或者 在搜索栏搜索RAM 访问控制 进入RAM 控制台,获取accessKeyIdaccessKeySecret
在这里插入图片描述
点击AccessKey:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就可以拿到accessKeyId 和 accessKeySecret了

4.拿到了accessKeyId 和 accessKeySecret ,就可以直接上代码操作了

下面列举几个简单的示例:

打开idea,在pom.xml导入依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.15.1</version>
</dependency>

新建Demo类:

4.1.新建桶代码

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Demo {
    // 新建桶
    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        String accessKeyId = "你的accessKeyId ";
        String accessKeySecret = "你的accessKeySecret ";
        // 填写Bucket名称,例如jljlm。
        String bucketName = "jljlm";

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

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

运行后刷新oss控制台,结果如下:
在这里插入图片描述
成功!!!在这里插入图片描述

4.2.写入txt文件并上传到oss代码

// 通过流式上传的方式将文件上传到OSS。
    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        String accessKeyId = "你的accessKeyId ";
        String accessKeySecret = "你的accessKeySecret ";
        // 填写Bucket名称,例如jljlm。
        String bucketName = "jljlm";
        // 填写Object完整路径,例如txt文件/hello.txt。Object完整路径中不能包含Bucket名称。
        // 这是oss上的路径
        String objectName = "txt文件/hello.txt";

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

        try {
        	// 文件内容
            String content = "Hello OSS";
            ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
        } 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();
            }
        }
    }

运行后刷新oss控制台,结果如下:
在这里插入图片描述
成功!!!在这里插入图片描述

4.3.文件下载读取输出到控制台代码

// 通过流式下载方式从OSS下载读取文件。
public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
       String accessKeyId = "你的accessKeyId ";
        String accessKeySecret = "你的accessKeySecret ";
        // 填写Bucket名称,例如jljlm。
        String bucketName = "jljlm";
        // 填写Object完整路径,例如txt文件/hello.txt。Object完整路径中不能包含Bucket名称。
        String objectName = "txt文件/hello.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 (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();
            }
        }
    }

读取结果输出控制台
在这里插入图片描述

成功!!!在这里插入图片描述

4.4.列举文件

    // 列举文件:默认列举100个文件。
    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        String accessKeyId = "你的accessKeyId ";
        String accessKeySecret = "你的accessKeySecret ";
        // 填写Bucket名称,例如jljlm。
        String bucketName = "jljlm";

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

        try {
            // ossClient.listObjects返回ObjectListing实例,包含此次listObject请求的返回结果。
            ObjectListing objectListing = ossClient.listObjects(bucketName);
            // objectListing.getObjectSummaries获取所有文件的描述信息。
            for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
                System.out.println(" - " + objectSummary.getKey() + "  " +
                        "(size = " + objectSummary.getSize() + ")");
            }
        } 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();
            }
        }
    }

读取结果输出控制台:
在这里插入图片描述
成功!!!在这里插入图片描述

4.5.删除指定文件

// 删除指定文件
    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        String accessKeyId = "你的accessKeyId ";
        String accessKeySecret = "你的accessKeySecret ";
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "jljlm";
        // 填写Object完整路径,例如txt文件/hello.txt。Object完整路径中不能包含Bucket名称。
        // 这是oss上的路径
        String objectName = "txt文件/hello.txt";

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

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

运行后刷新OSS控制台:
在这里插入图片描述
成功!!!在这里插入图片描述

三、总结

OSS提供可靠的存储和访问服务,OSS可用于图片、音视频、日志等海量文件的存储,方便的存储各种文件。

@作者:加辣椒了吗?
简介:憨批大学生一枚,喜欢在博客上记录自己的学习心得,也希望能够帮助到你们!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/8224.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CTP_将C++封装为Python可调用接口

目录 写在前面&#xff1a; 前置准备&#xff1a; step 1 与上期所原始代码对比分析源码 td源码 1 配置属性-》常规-》配置类型 要为 “动态库(.dll)” 2 VC目录 -》包含目录 3 VC目录 -》 库目录 4 链接器-》常规-》附加库目录 5 链接器-》输入-》附加依赖项 vnctp.h 的功…

CTF杂项提纲

CTF的杂项是涉及编码&#xff0c;图片隐写&#xff0c;音频隐写&#xff0c;压缩包分析的方向&#xff0c;本文对MISC的知识点做了一个简单列举 常见编码 ASCII 0-9,48-57 A-Z 65-90 a-z 97-122 URL url编码又叫百分号编码&#xff0c;是统一资源定位的编码方式 base16/…

leetcode每日一题:数组篇(1/2)

&#x1f61a;一个不甘平凡的普通人&#xff0c;日更算法学习和打卡&#xff0c;期待您的关注和认可&#xff0c;陪您一起学习打卡&#xff01;&#xff01;&#xff01;&#x1f618;&#x1f618;&#x1f618; &#x1f917;专栏&#xff1a;每日算法学习 &#x1f4ac;个人…

cmake 常用方法自我总结

目录 1. 编译一个库依赖另一个库 2. 把某一个CMakeLists.txt中变量设为整个工程中任意CMakeLists.txt都可以访问 3. 枚举目录下所有匹配文件 4. 拷贝文件 5. 解决方案下分Header Files&#xff0c;Source Files目录 6. 依赖头文件&#xff08;附加依赖项&#xff09; 7.…

通过阿里云函数计算解决ChatGPT API的调用问题

ChatGPT系列文章 与其被ChatGPT取代&#xff0c;不如征服ChatGPT&#xff0c;做它的主人&#xff01; 文章目录ChatGPT系列文章前言命令行部署准备工作两行命令实现部署应用中心部署使用代理访问API总结前言 自2022年11月30日 OpenAI 发布 ChatGPT 以来&#xff0c;虽然时有唱…

算法训练第四十九天 | 121.买卖股票的最佳时机、122.买卖股票的最佳时机II

动态规划part10121.买卖股票的最佳时机题目描述思路暴力贪心动态规划122.买卖股票的最佳时机II题目描述思路121.买卖股票的最佳时机 题目链接&#xff1a;121.买卖股票的最佳时机 参考&#xff1a;https://programmercarl.com/0121.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9…

entos7系统部署网站项目教程【超详细教程】

CentOS 7 系统部署项目教程 本文将介绍如何在 CentOS 7 系统上部署项目。在本教程中&#xff0c;我们将使用 Apache、PHP 和 MySQL 作为我们的主要开发工具。对于初学者来说&#xff0c;这是一个入门级的教程&#xff0c;旨在提供一些基本的概念和工具&#xff0c;以帮助您更好…

实践分享:如何在自己的App 中引入AI 画图

最近AIGC 简直是杀疯了&#xff0c;领导动不动就让我们在APP 里引入大语言模型&#xff0c;引入AI画图……说搞就搞&#xff01;本期基于最近在app 里引入AI画图小程序的操作&#xff0c;给大家做一波实践分享。 Scribble Diffusion 是一个简单的在线服务&#xff0c;它使用 A…

Kotlin 面向对象(二)

【文字内容源于《疯狂Kotlin讲义》&#xff0c;代码内容原创】 Kotlin 面向对象&#xff08;一&#xff09;_桃子不出的博客-CSDN博客 目录 四、隐藏和封装 1、包和导包 2、Kotlin的默认导入 3、使用访问控制符 五、深入构造器 1、主构造器和初始化块 2、次构造器和构…

Redis —缓存常见异常

文章目录缓存雪崩解决办法缓存击穿解决办法缓存穿透缓存穿透的两种常见情况解决办法布隆过滤器工作原理缓存雪崩 大量缓存数据在同一时间过期&#xff08;失效&#xff09;或者 Redis 故障宕机时&#xff0c;如果此时有大量的用户请求&#xff0c;都无法在 Redis 中处理&#…

父子组件传值问题

文章目录前言一、问题描述二、问题解决前言 在写毕业设计&#xff0c;涉及了一些前端Vue.js的组件传值知识并出现了相关问题&#xff0c;因此进行记录。 问题 Vue.js的使用不熟练&#xff0c;相关组件、props等掌握不清晰前端代码书写不规范 望指正&#xff01; 一、问题描述 …

php企业公司员工考勤加班系统

1、系统管理员 负责员工的基本信息管理&#xff08;包括姓名、工号、所在部门信息的添加、修改和删除&#xff09;和员工的上下班时间的添加。 公司考勤记录方式为刷上下班卡&#xff0c;卡机自动记录员工上下班时间。我直接跳过这一步&#xff0c;系统管理员每天在员工下班后直…

面试被问到:测试计划和测试方案有什么区别?

面试的时候&#xff0c;很多小伙伴都被面试官问过这个问题 “测试计划和测试方案有什么区别”&#xff1f; 到底有什么区别呢&#xff1f;我们先好好了解下这两个文档。 一、测试计划 1、测试计划是什么&#xff1f; 测试计划是组织管理层面的文件&#xff0c;从组织管理的…

派盘为您的个人数据安家

现如今,我们的生活中有着各种各样的数据。在工作中会有各种文件、邮件;在生活中则有照片和视频等。数据的来源多,时间点不一致且混乱。 数据是否能安全、稳定、长久的存储以及便捷高效的使用对我们来说相当重要。你是否经常出差需要带上电脑或者移动硬盘,想存网盘又怕丢失或…

一篇文章,弄懂蓝牙协议怎么看,进军物联网!

做过物联网相关项目的小伙伴都知道&#xff0c;避免不了和蓝牙&#xff0c;串口通信打交道。所以了解怎么看蓝牙协议基本上可以说是进军物联网的一大助力。很多新人小伙伴刚进入这个行业都是一脸懵逼的&#xff0c;特别是接入的时候&#xff0c;对方直接给了一个文档&#xff0…

【WCH】基于Keil环境CH32F203 GPIO点灯实验

【WCH】基于Keil环境CH32F203 GPIO点灯实验&#x1f4cc;相关篇《关于CH32F203程序下载方式说明》 ✨如果是首次入门使用&#xff0c;请先看上面的相关篇内容&#xff0c;了解其下载相关事宜后&#xff0c;再进来学习。 GPIO模式介绍 &#x1f33f;在应用手册的第十章介绍GPIO…

1mm³大小,世界首个功率破KW的单芯片激光模组诞生

近年来随着技术不断发展&#xff0c;激光雷达的体积、成本也在不断降低&#xff0c;成为了一种受到各行业关注的关键技术。它的用途越发广泛&#xff0c;可用于自动驾驶汽车、大气观测使用的LiDAR传感器&#xff0c;还可以用于医疗保健&#xff08;治疗和检查分析&#xff09;、…

给boss直聘的搜索结果加上hr活跃状态,少看点半年活跃的岗位

背景&#xff1a;这段时间找工作&#xff0c;无奈大环境不好&#xff0c;所在城市大部分公司都投了。就是没几个回复的&#xff0c;要么送达&#xff0c;要么已读不回&#xff0c;要么拿了简历没见邀约。然后boss为了争取我们多浏览网站&#xff0c;把一些陈年老醋也拿上台面&a…

阿里巴巴春招的后端面经来啦~

操作系统 一个操作系统&#xff0c;我们在衡量它的内存占用的时候&#xff0c;它一般会有哪些内存的部分&#xff1f; 读者答&#xff1a;堆和栈 补充&#xff1a; 这个其实是问你对free命令的理解。 主机的内存做一些清理的动作。你知道这里面会涉及到对哪些内存区域进行操…

yolov5-v7.0实例分割快速体验

简介 &#x1f680;yolov5-v7.0版本正式发布&#xff0c;本次更新的v7.0则是全面的大版本升级&#xff0c;最主要的功能就是全面集成支持了实例分割&#xff0c;yolov5已经集成检测、分类、分割任务。 前面几篇文章已经介绍过关于Yolov5的一些方面 yolov5目标检测:https://bl…
最新文章