首页 > 其他 > 详细

阿里云oss对象存储

时间:2021-05-11 10:01:47      阅读:18      评论:0      收藏:0      [点我收藏+]

1.对象存储oss的概念

OSS类似于网盘,但是你可以拿到文件支链,包含附件服务器、头像服务器、图片服务器、下载服务器等,对象存储OSS是在云上提供无层次结构的分布式存储产品,为用户提供单价较低且快速可靠的数据存储方案。用户可通过云服务器实例或互联网使用 Web API 接口存储和检索数据。在 OSS 上的数据,用户使用指定域名的 URL 地址,通过 HTTP/HTTPS 协议存储和检索每个独立的数据对象。

2.对象存储的优点

可扩展性高:对外服务是可以宣称做到空间无限的,用户不用担心空间不够的问题;

安全性高:对象存储通常凭借HTTP调用对象存储本身提供的认证密钥来提供数据访问;

效率高:扁平化结构,不受复杂目录系统对性能的影响;

成本低:与块存储方式相比,对象存储是最具成本效益的数据存储类型,并且与云计算搭配,把对象存储的这一特性发挥的淋漓尽致。

访问方便:对象存储提供开放的REST API接口。程序员在开发应用时,直接把存储参数写进代码,就可以通过API接口调用对象存储里的数据。相比文件存储那一串串的路径,对象存储要方便很多。(对象存储需求用户,并不是个人买来当网盘用,而是企业或政府用户用于系统数据存储。例如企业系统的归档数据,网站、App的静态图片、音频、视频等。)

3.阿里云oss对象存储

为了解决海量数据存储与弹性扩容,我们采用云存储的解决方案- 阿里云OSS。

3.1开通服务

进入阿里云官网网站:https://www.aliyun.com/?utm_content=se_1008364713 搜索产品对象存储OSS

具体步骤可参考如下:

(1)申请阿里云账号
(2)实名认证
(3)开通“对象存储OSS”服务
(4)进入管理控制台

3.2创建bucket

选择:标准存储、公共读、不开通

技术分享图片

 

 4.使用java代码上传图片到oss

4.1创建项目

创建maven项目aliyun-oss

4.2导入依赖

在pom.xml中导入相关依赖

        <!--oss依赖-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>2.5.0</version>
        </dependency>

4.3定义常量

在application.yml中定义常量

aliyun:
  oss:
    file:
      endpoint: oss-cn-shanghai.aliyuncs.com
      keyid: LTAIsOB7XkCHTGX8
      keysecret: ASy5lzMwr5KIVEUY3eDhFFijD1RkPC
      bucketname: eric123

4.4创建初始化工具类

创建一个类来获取yml里面定义的常量

具体代码操作如下

技术分享图片
    @Value("${aliyun.oss.file.endpoint}")
    private String endpoint;

    @Value("${aliyun.oss.file.keyid}")
    private String keyid;

    @Value("${aliyun.oss.file.keysecret}")
    private String keysecret;

    @Value("${aliyun.oss.file.bucketname}")
    private String bucketname;

    @Value("${aliyun.oss.file.host}")
    private String host;

    //定义常量,为了能够使用
    public static String ENDPOINT;
    public static String KEYID;
    public static String KEYSECRET;
    public static String BUCKEYNAME;
    public static String HOST;

    @Override
    public void afterPropertiesSet() throws Exception {
        ENDPOINT=endpoint;
        KEYID=keyid;
        KEYSECRET=keysecret;
        BUCKEYNAME=bucketname;
        HOST=host;
    }
View Code

4.5上传文件到oss

创建类来实现上传文件到阿里云oss,参考SDK中的:Java->上传文件->简单上传->流式上传->上传文件流

    @PostMapping("uploadFile")
    public R uploadTeacherImg(@RequestParam("file") MultipartFile file,
                              @RequestParam(value = "host", required = false) String host) {
        try {
            String filename = file.getOriginalFilename();
            String uuid = UUID.randomUUID().toString();
            filename = uuid + filename;
            //获取当前时间
            String filepath = new DateTime().toString("yyyy/MM/dd");
            //拼接文件完整名称
            String hostName = ConstantPropertiesUtil.HOST;
            if (StringUtils.isEmpty(host)) {
                filename = filepath + "/"+ hostName + "/" + filename  ;
            } else {
                filename = filepath + "/" + host + "/" + filename;
            }
            InputStream in = file.getInputStream();

            // 创建OSSClient实例。
            OSSClient ossClient = new OSSClient(ConstantPropertiesUtil.ENDPOINT, ConstantPropertiesUtil.KEYID, ConstantPropertiesUtil.KEYSECRET);
            // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
            //  InputStream inputStream = new FileInputStream("D:\\localpath\\examplefile.txt");
            // 填写Bucket名称和Object完整路径。Object完整路径中不能包含Bucket名称。
            ossClient.putObject(ConstantPropertiesUtil.BUCKEYNAME, filename, in);
            // 关闭OSSClient。
            ossClient.shutdown();
            //https://eric123.oss-cn-shanghai.aliyuncs.com/0406_1.jpg
            String path = "http://" + ConstantPropertiesUtil.BUCKEYNAME + "." + ConstantPropertiesUtil.ENDPOINT + "/" + filename;
            return R.ok().data("imageUrl", path);
        } catch (Exception e) {
            return R.error();
        }
    }

 4.6删除oss中的文件

// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
String objectName = "<yourObjectName>";

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

// 删除文件。如需删除文件夹,请将ObjectName设置为对应的文件夹名称。如果文件夹非空,则需要将文件夹下的所有object删除后才能删除该文件夹。
ossClient.deleteObject(bucketName, objectName);

// 关闭OSSClient。
ossClient.shutdown();

 

阿里云oss对象存储

原文:https://www.cnblogs.com/fqh2020/p/14753308.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!