首页 > 其他分享 >OSS对象资源管理,阿里云OSS对象存储的使用

OSS对象资源管理,阿里云OSS对象存储的使用

时间:2024-09-23 17:49:01浏览次数:12  
标签:文件 String 对象 OSS aliyun import AliOssUtil 资源管理

1、登录aliyun

1.1、什么是OSS?有什么用?

OSS 是“Object Storage Service”的缩写,中文常称为“对象存储服务”。OSS 是一种互联网云存储服务,主要用于海量数据的存储与管理。

相较于nginx,OSS更灵活,不用将文件存储于本地磁盘或服务器中,并且可以实现文件共享,它通过简单的RESTful接口提供高可用、高可靠、安全、低成本的数据存储能力,支持多种数据的存储需求,如图片、视频、音频文件以及各类文档等,在当今市场上应用广泛。

1.2、进入阿里云网站

2、开通OSS

2.1 点击”免费试用“

2.2 立即试用

2.3 立即试用

2.4、提交成功

3、创建存储空间

3.1进入前台界面

3.2 新建Bucket

3.3 进入Bucket并创建文件夹

"Bucket"是一个核心概念,Bucket 可以被形象地理解为一个容器或目录,用于存储和组织文件或对象。

3.4进入Bucket后查看概览,记录下图信息

4、查询accessKeyId和accessKeySecret。

4.1 点击确认

4.2点击继续使用AccessKey

4.3 创建AccessKey

4.4 安全验证

4.5 获取AccessKeyId和AccessKeySecret

5、再次进入

5.1产品文档

5.2 免费试用

5.3 我的试用

5.4 管理关联实例

5.5查看相关信息

6 代码操作

6.1 设置配置信息

# properties文件格式
aliyun.oss.bucketName = Bucket名字
aliyun.oss.endpoint = 自己的域名节点
aliyun.oss.accessKeyId = 自己的accessKeyId
aliyun.oss.accessKeySecret = 自己的accessKeySecret

#yml文件格式
#aliyun:
#  oss:
#    bucketName:
#    endpoint: 
#    accessKeyId: 
#    accessKeySecret: 

6.2 引入依赖


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

6.3 创建工具类AliOssUtil

AliOssUtil是一个用于封装阿里云对象存储服务(OSS)操作的工具类。这个工具类可以帮助你更简单地执行常见的OSS操作,如上传文件、下载文件、删除文件、列出bucket中的对象等。

package com.beiyou.Util;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;

import java.io.File;
import java.net.URL;
import java.util.Date;

public class AliOssUtil {

    private static final String ENDPOINT = ""; // 更改为你的Endpoint
    private static final String ACCESS_KEY_ID = ""; // 更改为你的Access Key ID
    private static final String ACCESS_KEY_SECRET = ""; // 更改为你的Access Key Secret
    private static final String BUCKET_NAME = ""; // 更改为你的Bucket名称

    private static OSS ossClient;

    // 初始化OSS客户端
    public static void init() {
        ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
    }

    // 上传文件到OSS
    public static void uploadFile(String objectName, File file) {
        ossClient.putObject(new PutObjectRequest(BUCKET_NAME, objectName, file));
    }

    // 删除OSS上的文件
    public static void deleteFile(String objectName) {
        ossClient.deleteObject(BUCKET_NAME, objectName);
    }

    // 获取文件URL
    public static URL getUrl(String objectName, int expires) {
        // 设置URL过期时间为expires秒后
        Date expiration = new Date(System.currentTimeMillis() + expires * 1000L);
        return ossClient.generatePresignedUrl(BUCKET_NAME, objectName,expiration);
    }

	    // 列出Bucket中的所有对象
    public static List<OSSObjectSummary> listAllObjects() {
        ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(BUCKET_NAME));
        List<OSSObjectSummary> objectSummaries = objectListing.getObjectSummaries();
        while (true) {
            // 如果有下一批,继续获取
            if (objectListing.isTruncated()) {
                objectListing = ossClient.listObjects(String.valueOf(objectListing));
                objectSummaries.addAll(objectListing.getObjectSummaries());
            } else {
                break;
            }
        }
        return objectSummaries;
    }


    // 关闭OSS客户端
    public static void shutdown() {
        ossClient.shutdown();
    }
}

Java

6.4 测试

package com.beiyou;


import com.beiyou.Util.AliOssUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.File;
import java.net.URL;

@Slf4j
@SpringBootTest
class Application {

    // 上传文件
    @Test
    void contextLoads() {
        AliOssUtil.init();

        // 上传文件
        File file = new File("C:\\Users\\ljj\\Downloads\\1.jpg");
        String name = file.getName();
        AliOssUtil.uploadFile(name, file);

        // 关闭OSS客户端
        AliOssUtil.shutdown();
    }


    // 删除文件
    @Test
    void deleteFile() {
        AliOssUtil.init();

        // 删除文件
        AliOssUtil.deleteFile("AccessKey.csv");

        // 关闭OSS客户端
        AliOssUtil.shutdown();
    }

    @Test
    void getUrl() {
        AliOssUtil.init();

        // 获取文件URL
        URL url = AliOssUtil.getUrl("1.jpg", 3600);// 3600 seconds = 1 hour
        if (url != null) {
            System.out.println("文件URL: " + url);
        } else {
            System.out.println("无法获取文件URL");
        }

        // 关闭OSS客户端
        AliOssUtil.shutdown();
    }

	    @Test
    void listObjects() {
        AliOssUtil.init();

        // 列出所有文件
        List<OSSObjectSummary> summaries = AliOssUtil.listAllObjects();
        for (OSSObjectSummary summary : summaries) {
            System.out.println(" - " + summary.getKey() + "  " +
                    "(size = " + summary.getSize() + ")");
        }

        // 关闭OSS客户端
        AliOssUtil.shutdown();
    }


}

Java

注意

路径格式问题:文件路径需要使用双斜杠(”\\”)

7 应用到工程中

7.1 需求

将本来上传到nginx的图片上传到OSS,并成功在工程中展现出来。

7.2 实操

7.2.1修改UploadService

将以下的upload方法和select方法加到UploadService.java文件中

 public String upload(UploadDto uploadDto) {        String name = uploadDto.getName();        String base64 = uploadDto.getBase64();        String[] strings = StrUtil.splitToArray(base64, "base64,");        //解码        byte[] decode = Base64.decode(strings[1]);        //生成文件名,生成唯一数字,避免文件名重复        name= IdUtil.fastSimpleUUID() +"_"+name;        //获取文件名,将文字转换为拼音        name = PinyinUtil.getPinyin(name, "");        //初始化OSS        AliOssUtil.init();        //将字节数组转换为文件        File file = FileUtil.writeBytes(decode, name);        //将文件上传到OSS        AliOssUtil.uploadFile(name,file);        //关闭资源        AliOssUtil.shutdown();//        FileUtil.writeBytes(decode,uploadPath+name);        //返回文件路径        URL url = AliOssUtil.getUrl(name, 60 * 60 * 24 * 365);//路径过期时间设置为365天        return url.toString();    }

    public List<FileInfoDto> select() {        //初始化OSS        AliOssUtil.init();        //获取文件列表        List<OSSObjectSummary> listAllObjects = AliOssUtil.listAllObjects();        //新建list集合,结合中是FileInfoDto的类对象,对象包含了文件名称和文件路径        List<FileInfoDto> fileInfoDtoList = new ArrayList<>();        // 遍历listAllObjects集合,将集合中的数据封装到FileInfoDto的类对象中        listAllObjects.forEach(item->{            //创建FileInfoDto的类对象            FileInfoDto fileInfoDto = new FileInfoDto();            fileInfoDto.setName(StrUtil.subBefore(item.getKey(), "_", true));            fileInfoDto.setUrl(AliOssUtil.getUrl(item.getKey(), 60 * 60 * 24 * 365).toString());            fileInfoDtoList.add(fileInfoDto);        });        //关闭资源        AliOssUtil.shutdown();        return fileInfoDtoList;    }

Java

7.2.2 测试

标签:文件,String,对象,OSS,aliyun,import,AliOssUtil,资源管理
From: https://blog.csdn.net/zhzjn/article/details/142464197

相关文章

  • asp.net core webapi 将两个对象/两个类合并到一起返回给前端
    举例:A,B类publicclassA{publicintid{get;set;}publicstringname{get;set;}publicstringphone{get;set;}}publicclassB{publicintage{get;set;}publicstringsex{get;set;}}publicclassAB{publicAa{get;set;}public......
  • scala的单例对象
    在定义时,使用private修饰的属性有什么特点  用object关键字来创建一个单例对象,单例对象在整个应用程序中只有一个实例,适合用于存放工具方法,常量或共享状态  伴生类和伴生对象 访问私有方法   ......
  • springboot中小学数字化教学资源管理平台
    基于springboot+vue实现的中小学数字化教学资源管理平台 (源码+L文+ppt)4-078  第4章系统设计   4.1功能模块设计  系统整体模块分为管理员、教师和学生三大用户角色,整体功能设计图如下所示:图4-1系统整体功能图4.2数据库设计  4.2.1E-R模型结构设......
  • python 类与对象相关知识简记
    简单记录一下python对象相关的知识一、类与对象1、类简单理解,类是对象的定义方法python中类用class定义,格式如下class类名:        类的内容2、对象对象可以理解为属性加方法,对象的特征就是属性,对象的行为就是方法实例对象类的实例化,python中实例化格式如下......
  • DeepCross模型实现推荐算法
    1.项目简介A032-DeepCross项目是一个基于深度学习的推荐算法实现,旨在解决个性化推荐问题。随着互联网平台上信息和内容的爆炸式增长,用户面临着信息过载的困境,如何为用户提供高效、精准的推荐成为了关键。该项目背景基于现代推荐系统的发展,利用用户行为数据和内容特征,来生......
  • C++入门——类和对象(上)
    文章目录一、类的定义1.1类的定义格式1.2访问限定符1.3类域二、实例化2.1实例化概念2.2对象大小三、this指针四、C++和C语言实现Stack栈的对比总结一、类的定义1.1类的定义格式class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分......
  • Jboss CVE-2017-12149 靶场攻略
    漏洞简述该漏洞为Java反序列化错误类型,存在于Jboss的HttpInvoker组件中的ReadOnlyAccessFilter过滤器中。该过滤器在没有进⾏任何安全检查的情况下尝试将来⾃客户端的数据流进⾏反序列化,从⽽导致了漏洞漏洞范围JBoss5.x/6.x环境搭建cdvulhub-master/jboss/CVE-20......
  • C++类和对象(中),重点之重点,类和对象的掌握就看这一节了!
    [前言] 类中有六大默认成员函数,默认成员函数就是用户不显示实现,编译器也会自动生成的成员函数。目录[前言] 一、构造函数二、析构函数三、拷贝构造函数四、赋值运算符重载五、取地址运算符重载一、构造函数构造函数虽然叫构造,但是它并不是开空间创建对象,而是在对......
  • JavaScript中的Math对象详解
    JS中的算术运算基本运算:加减乘除求余数,+-*/%.复杂运算:通过Math对象的属性定义的函数和常量来实现。代码实现:<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>3.1.3JS中的算术运算</title></head><body>......
  • 不小心把Windows资源管理器关闭了怎么办
    因为在压缩文件夹的时候Windows资源管理器给卡死了,怎么都关不了所以进行了一个很降智的操作...打开任务管理器,把Windows资源管理器给“结束任务”了...一瞬间,电脑开始闪屏,然后最底下那条任务栏菜单全部消失不见,按windows键都没反应...幸亏浏览器界面还在,赶紧搜索怎么恢复当意......