谷粒商城实战笔记-62-商品服务-API-品牌管理-OSS整合测试

news2024/9/28 17:28:32

文章目录

  • 一,Java中上传文件到阿里云OSS
    • 1,整合阿里云OSS
    • 2,测试上传文件
  • 二,Java中整合阿里云OSS服务指南
    • 引言
    • 准备工作
      • 1. 注册阿里云账号
      • 2. 获取Access Key
      • 3. 添加依赖
    • 实现OSS客户端
      • 1. 初始化OSSClient
      • 2. 创建Bucket
      • 3. 上传文件
      • 4. 下载文件
      • 5. 删除文件
    • 最佳实践
    • 结语

一,Java中上传文件到阿里云OSS

1,整合阿里云OSS

product模块中添加OSS依赖。

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

2,测试上传文件

public void testUpload() throws ClientException {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "gulimallfuck";
        // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
        String objectName = "1234.png";
        // 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。
        // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
        String filePath= "C:\\Users\\Lenovo\\Desktop\\1.png";

        // 创建OSSClient实例。
        String accessKeyID = "LTAI5tCxH6terewer5dzq7uau";
        String accessKeySecret = "fzQdfdsfdfaffdffaRopvBC40d1202jgb";
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyID, accessKeySecret);

        try {
            // 创建PutObjectRequest对象。
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));
           
            // 上传文件。
            PutObjectResult result = ossClient.putObject(putObjectRequest);
        } catch (Exception oe) {
           oe.printStackTrace();
        }
    }

这是OSS参考文档中的代码,需要修改的地方:

  • endpoint
    在这里插入图片描述
    在OSS控制台查找endpoint。
    在这里插入图片描述
  • accessKeySecret 和 accessKeyId
    阿里云控制台,鼠标移至右上角头像处。
    在这里插入图片描述
    下列弹窗点击AccessKey 管理,进入一个页面后会有如下弹窗,选择开始使用子用户
    在这里插入图片描述
    创建用户。
    在这里插入图片描述
    在用户列表中点击刚创建的用户,进入新界面,点击创建AccessKey
    在这里插入图片描述
  • 选择一个文件,在代码中配置路径。
    在这里插入图片描述

运行测试用例,上传文件。

上传完成后,在文件列表中,可以看到刚刚上传的文件。

在这里插入图片描述

二,Java中整合阿里云OSS服务指南

引言

随着云计算的发展,越来越多的应用选择将数据存储在云服务提供商的平台上。阿里云对象存储服务(Object Storage Service,简称OSS)提供了简单高效、安全可靠、低成本的数据存储服务,非常适合存储大量图片、视频、日志数据等非结构化数据。

本文将指导你如何在Java项目中整合阿里云OSS服务,实现文件的上传、下载等功能,并给出一些最佳实践建议。

准备工作

1. 注册阿里云账号

如果你还没有阿里云账号,首先需要注册一个。注册完成后,你可以访问阿里云控制台,并在其中创建OSS Bucket。

2. 获取Access Key

为了能够使用OSS API,你需要获取Access Key ID 和 Access Key Secret。这些密钥用于身份验证,确保只有授权的用户才能访问你的Bucket。

  • 登录阿里云RAM控制台。
  • 进入AccessKey管理页面。
  • 创建新的Access Key并保存好Access Key ID 和 Access Key Secret。

3. 添加依赖

为了方便地使用OSS SDK,我们需要在项目中引入相应的依赖。如果你使用的是Maven,可以在pom.xml文件中加入以下依赖:

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

如果你使用Gradle,可以添加如下依赖:

dependencies {
    implementation 'com.aliyun.oss:aliyun-sdk-oss:3.10.3'
}

实现OSS客户端

1. 初始化OSSClient

创建一个OSSClient实例来连接OSS服务。这个实例是线程安全的,可以在应用程序中重复使用。

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

public class OSSClientUtil {

    private static final String endpoint = "YourEndpoint"; // 替换为你所在区域的endpoint
    private static final String accessKeyId = "YourAccessKeyId";
    private static final String accessKeySecret = "YourAccessKeySecret";

    public static OSS getInstance() {
        return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    }
}

2. 创建Bucket

创建Bucket是使用OSS服务的第一步。你可以使用createBucket方法来创建一个新的Bucket。

public void createBucket(String bucketName) {
    OSS ossClient = OSSClientUtil.getInstance();
    if (!ossClient.doesBucketExist(bucketName)) {
        ossClient.createBucket(bucketName);
    }
    ossClient.shutdown();
}

3. 上传文件

使用putObject方法可以将本地文件上传到指定的Bucket中。

public void uploadFile(String bucketName, String objectName, File file) {
    OSS ossClient = OSSClientUtil.getInstance();
    ossClient.putObject(bucketName, objectName, file);
    ossClient.shutdown();
}

4. 下载文件

使用getObject方法可以从OSS中下载文件。

public void downloadFile(String bucketName, String objectName, File destFile) {
    OSS ossClient = OSSClientUtil.getInstance();
    ossClient.getObject(new GetObjectRequest(bucketName, objectName), destFile);
    ossClient.shutdown();
}

5. 删除文件

使用deleteObject方法可以删除指定的文件。

public void deleteFile(String bucketName, String objectName) {
    OSS ossClient = OSSClientUtil.getInstance();
    ossClient.deleteObject(bucketName, objectName);
    ossClient.shutdown();
}

最佳实践

  • 安全性:确保Access Key ID 和 Access Key Secret的安全,避免泄露。
  • 权限管理:使用RAM用户而非主账号的密钥,为不同的应用程序分配最小必要的权限。
  • 异常处理:处理好网络中断、服务器不可达等情况下的异常。
  • 日志记录:记录关键操作的日志以便追踪问题和审计。
  • 成本控制:定期清理不再使用的文件,利用OSS生命周期管理策略自动转换存储类别或删除过期文件。

结语

通过上述步骤,你可以在Java项目中轻松地整合阿里云OSS服务,实现文件的上传、下载等功能。阿里云OSS提供了丰富的API和工具,可以根据你的业务需求进一步定制和扩展。


希望这篇博客能帮助你在Java项目中顺利整合阿里云OSS服务。如果有任何疑问或需要进一步的帮助,请随时提问!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis的五种数据类型与命令

目录 引言 一 Redis的特性 二 Redis的安装 三 Redis的优点 四 Redis的五种数据类型与命令 五 Redis的配置文件 引言 Redis是什么&#xff1f; Remote Dictionary Service(远程字典服务器) Redis 是一个开源的(BSD许可)的&#xff0c;C语言编写的&#xff0c;高性能的数…

Windows电脑如何启动RTSP服务实现本地摄像头数据共享

技术背景 提起Windows共享本地摄像头&#xff0c;好多人想到的是通过ffmepg或vlc串流到服务器&#xff0c;实际上&#xff0c;用轻量级RTSP服务更简单&#xff0c;本文就介绍下&#xff0c;如何用大牛直播SDK的Windows轻量级RTSP服务&#xff0c;采集摄像头&#xff0c;生成本…

记录使用el-form的resetFields时遇到的表单数据回显失败的问题,去除nextTick解决

首先简单介绍一下resetFields的基础作用 element-plus官网el-form介绍 本案例中实现点击每行的编辑按钮时&#xff0c;弹出弹窗和表单 由于设置了表单校验&#xff0c;如图&#xff0c;表单内容不符合设定的校验规则时会有提示 如果仅仅这样就会出现问题&#xff0c;下次打…

分布式搜索引擎ES--Elasticsearch集群

1.Elasticsearch集群的概念 分片机制&#xff1a;每个索引都可以被分片 索引my_doc只有一个主分片&#xff1b;索引shop有三个主分片&#xff1b;索引shop2有5个主分片;(参考前面案例) 每个主分片都包含索引的数据&#xff0c;由于目前是单机&#xff0c;所以副分片是没有的&a…

PyQt ERROR:ModuleNotFoundError: No module named ‘matplotlib‘

Solution:打开cmd输入指令下载malplotlib pip install matplotlib

【Docker】CentOS7环境下的安装

环境展示 安装 配置仓库 sudo yum install -y yum-utils # docker官方key文件下载 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 建议使用阿里云key文件下载 sudo yum-config-manager --add-repo https://mirrors.aliyun.…

KubeSphere介绍及一键安装k8s

KubeSphere介绍 官网地址&#xff1a;https://kubesphere.io/zh/ KubeSphere愿景是打造一个以 Kubernetes 为内核的云原生分布式操作系统&#xff0c;它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用&#xff08;plug-and-play&#xff09;的集成&#xff0…

【Android】数据存储方案——文件存储、SharedPreferences、SQLite数据库用法总结

文章目录 文件存储存储到文件读取文件 SharedPreferences存储存储获取SharedPreferences对象Context 类的 getSharedPreferences() 方法Activity 类的 getPreferences() 方法PreferenceManager 类中的 getDefaultSharedPreferences() 方法 示例 读取记住密码的功能 SQLite数据库…

【解决方案】华普微汽车智能钥匙解决方案

一、方案概述 1.什么是被动式无钥匙进入 "被动式无钥匙进入"&#xff08;Passive Keyless Entry&#xff09;是一种用于车辆、建筑物或其他设施的访问控制系统。它利用无线射频技术自动判断用户是否接近&#xff0c;并进行身份识别以执行开锁或落锁动作&#xff0c…

【Unity2D 2022:UI】TextMeshPro组件无法显示中文

在Unity中创建了一个预制体Card&#xff0c;上面挂载了一些Text Mesh Pro组件用来显示卡牌信息。但是在输入文字后&#xff0c;发现无法显示中文&#xff1a; 解决方法如下&#xff1a; 一、导入字体文件&#xff08;ttf格式&#xff09;和常用字字集&#xff08;txt格式&…

leetcode日记(51)不同路径Ⅱ

和上一道题&#xff08;无障碍物的最短路径&#xff09;很像&#xff0c;但事实上比上一题多了优化方法 根据上一题改的代码如下&#xff0c;添加了对障碍物的判定&#xff0c;如果有障碍物则将数组值设为0。 class Solution { public:int uniquePathsWithObstacles(vector&l…

理发店收银管理系统 python、sqlite3、pyqt5

给姐姐家店写的一个&#xff0c;功能比较简单&#xff0c;结合gpt 功能包含&#xff1a;次卡和充值卡&#xff0c;可以查剩余次数、以及查找消费记录 后期会把sqlite3转到mysql&#xff0c;换成springboot的一个项目 1.使用技术&#xff1a; Python、sqlite3、PyQt5 2.页面 …

快手可灵视频生成大模型全方位测评

快手视频生成大模型“可灵”&#xff08;Kling&#xff09;&#xff0c;是全球首个真正用户可用的视频生成大模型&#xff0c;自面世以来&#xff0c;凭借其无与伦比的视频生成效果&#xff0c;在全球范围内赢得了用户的热烈追捧与高度评价。截至目前&#xff0c;申请体验其内测…

如何使用C#自制一个Windows安装包

原文链接&#xff1a;https://www.cnblogs.com/zhaotianff/p/17387496.html 以前都在用InstallShield制作安装包&#xff0c;基本需求是能满足的&#xff0c;但也有一些缺点&#xff1a; 1、界面不能完全定制 2、不能直接调用代码里的功能 平常使用一些其它软件&#xff0c;…

ETL数据集成丨将PostgreSQL数据库数据实时同步至PostgreSQL

前言 我们在进行数据集成、实时数据同步中&#xff0c;经常会出现在同一个数据库中做数据同步和复制、实时分析和报告、负载均衡和高可用性等场景&#xff0c;这次我们以PostgreSQL为例&#xff0c;通过ETLCloud工具&#xff0c;进行同数据库中数据实时同步的步骤应该如何设置…

Anconda 快速常用命令简洁版

目的&#xff1a;简单清楚的使用基本的conda 命令 可能需求 查看项目中的虚拟环境及依赖是否满足需求操作新环境来满足项目或者论文的实现 Anconda 常用命令 conda 查看基础命令1. 进入Anaconda 环境2. 查看版本3.查看有哪些虚拟环境4.激活虚拟环境5. 进入虚拟环境查看6. 退出…

shopee虾皮 java后端 一面面经 整体感觉不难

面试总结&#xff1a;总体不难&#xff0c;算法题脑抽了只过了一半&#xff0c;面试官点出了问题说时间到了&#xff0c;反问一点点&#xff0c;感觉五五开&#xff0c;许愿一个二面 1.Java中的锁机制&#xff0c;什么是可重入锁 Java中的机制主要包括 synchronized关键字 Loc…

微信小程序之计算器

在日常生活中&#xff0c;计算器是人们广泛使用的工具&#xff0c;可以帮助我们快速且方便地计算金额、成本、利润等。下面将会讲解如何开发一个“计算器”微信小程序。 一、开发思路 1、界面和功能 “计算器”微信小程序的页面效果如图所示 在计算器中可以进行整数和小数的…

NET8部署Kestrel服务HTTPS深入解读TLS协议之Certificate证书

Certificate证书 Certificate称为数字证书。数字证书是一种证明身份的电子凭证&#xff0c;它包含一个公钥和一些身份信息&#xff0c;用于验证数字签名和加密通信。数字证书在网络通信、电子签名、认证授权等场景中都有广泛应用。其特征如下&#xff1a; 由权威机构颁发&…

Minos 多主机分布式 docker-compose 集群部署

参考 docker-compose搭建多主机分布式minio - 会bk的鱼 - 博客园 (cnblogs.com) Minio 是个基于 Golang 编写的开源对象存储套件&#xff0c;虽然轻量&#xff0c;却拥有着不错的性能 中文地址&#xff1a;MinIO | 用于AI的S3 & Kubernetes原生对象存储 官网地址&#xf…