当前位置: 首页 > article >正文

OSS对象资源管理

1、登录aliyun

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

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

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

1.2、进入阿里云网站

 

2、开通OSS

2.1 点击”免费试用“

 

2.2 立即试用 

 2.4、提交成功

3、创建存储空间

3.1新建Bucket

 

3.2 进入Bucket并创建文件夹

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

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

 4、查询accessKeyId和accessKeySecret。

 4.1 点击确认

 4.2点击继续使用AccessKey

 4.3 创建AccessKey

4.4 安全验证 

 4.5 获取AccessKeyId和AccessKeySecret

 

5 代码操作

5.1 设置配置信息

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

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

 5.2 引入依赖


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

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

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


}


http://www.kler.cn/news/305629.html

相关文章:

  • React函数组件传参
  • 大数据-127 - Flink State 04篇 状态原理和原理剖析:状态存储 Part2
  • 汽车以太网100BASE-T1 和 1000BASE-T1特性
  • QXml 使用方法
  • 关于linux里的df命令以及inode、数据块-stat链接数以及关于awk文本处理命令中内置函数sub、gsub、sprintf
  • Excel 国产化替换新方案
  • cc2530按键中断实现控制LED
  • 【MySQL】MySQL索引与事务的透析——(超详解)
  • 情感识别系统源码分享
  • 【hot100-java】【搜索二维矩阵 II】
  • 如何应对突发的技术故障和危机?
  • Redis集群_主从复制
  • 每日学习一个数据结构-倒排表
  • Lua热更
  • 【在Linux世界中追寻伟大的One Piece】网络命令|验证UDP
  • Gitlab及Git使用说明
  • 05_Python数据类型_列表的相关运算
  • 日志收集工具 Fluentd vs Fluent Bit 的区别
  • 【SQL】百题计划:SQL最基本的判断和查询。
  • 实时(按帧)处理的低通滤波C语言实现
  • 3.js - 着色器设置点材质(螺旋星系特效)
  • 八股文知识汇总(常考)
  • java中的注解原理是什么?
  • 第十周:机器学习
  • 深度学习的关键数据结构——张量解释
  • [羊城杯 2020]Blackcat1
  • ThinkPHP8出租屋管理系统
  • 【高等数学学习记录】函数
  • RPC远程调用的序列化框架
  • 【python】OpenCV—Age and Gender Classification