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

文章目录

  • 一,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"; // 替换为你所在区域的endpointprivate 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.rhkb.cn/news/384953.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch(七)— 相关性检索和组合查询

一、 相关性评分 全文检索与数据库查询的一个显著区别&#xff0c; 就是它并不一定会根据查询条件 做完全精确的匹配。除了模糊查询以外&#xff0c;全文检索还会根据查询条件给文档的相关性打分并排序&#xff0c;将那些与查询条件相关性高的文档排在最前面。 相关性( Relev…

Cocos Creator2D游戏开发-(1)初始化设置

初心: 做一款微信或者抖音小游戏,然后发布,对于我来说这是一个新的赛道; 写这些文档的原因,记录一下自己学习过程,下次用的时候方便找 cocos creator版本: 3.8.3 当前小游戏飞机大战教程来源于: 抖音: 禅影 chanying001 源码目录: https://www.kdocs.cn/l/caLr6XCbEfPa 创建一个…

【CN】Argo 持续集成和交付(一)

1.简介 Argo 英 [ˈɑ:ɡəu] 美 [ˈɑrˌɡo] Kubernetes 原生工具&#xff0c;用于运行工作流程、管理集群以及正确执行 GitOps。 Argo 于 2020 年 3 月 26 日被 CNCF 接受为孵化成熟度级别&#xff0c;然后于 2022 年 12 月 6 日转移到毕业成熟度级别。 argoproj.github.i…

关键词查找【Knuth-Morris-Pratt (KMP) 算法】

一个视频让你彻底学懂KMP算法_哔哩哔哩_bilibili KMP算法的核心是利用匹配失败后的信息&#xff0c;尽量减少模式串与主串的匹配次数以达到快速匹配的目的。 第一步&#xff1a;计算模式串(子串)和next[j]数组 模式串 前2位字母的next[j]固定是0 和 1 后续字母的nex[j]&…

MySql-函数

一、什么是函数&#xff1f; 数学函数 用作常规的数学运算&#xff1b; 字符串函数 对于字符串类型的字段处理&#xff1b; 日期时间函数 对于日期和时间类型的字段进行 处理&#xff1b; 聚合函数 常用于GROUP BY从句的 SELECT查询中&#xff1b; 自定义函数 根据实际需求…

Telegram曝零日漏洞,可伪装成视频攻击安卓用户

ESET Research在一个地下论坛上发现了一个针对Android Telegram的零日漏洞广告。 ESET将该漏洞命名为“EvilVideo”&#xff0c;并将其报告给Telegram&#xff0c;Telegram于7月11日更新了该应用程序。 EvilVideo允许攻击者发送恶意的有效载荷&#xff0c;这些载荷以视频文件…

Redis - SpringDataRedis - RedisTemplate

目录 概述 创建项目 引入依赖 配置文件 测试代码 测试结果 数据序列化器 自定义RedisTemplate的序列化方式 测试报错 添加依赖后测试 存入一个 String 类型的数据 测试存入一个对象 优化 -- 手动序列化 测试存入一个Hash 总结&#xff1a; 概述 SpringData 是 S…

PSINS工具箱函数介绍——insplot

insplot是一个绘图命令,用于将avp数据绘制出来 本文所述的代码需要基于PSINS工具箱,工具箱的讲解: PSINS初学指导使用方法 此函数使用起来也很简单,直接后面加avp即可,如: insplot(avp);其中,avp为: 每行表示一个时间1~3列为三轴姿态角(a),4-6列为三位速度(v),…

Milvus 向量数据库进阶系列丨部署形态选型

本系列文章介绍 在和社区小伙伴们交流的过程中&#xff0c;我们发现大家最关心的问题从来不是某个具体的功能如何使用&#xff0c;而是面对一个具体的实战场景时&#xff0c;如何选择合适的向量数据库解决方案或最优的功能组合。在 “Milvus 向量数据库进阶” 这个系列文章中&…

【BUG】已解决:ERROR: No matching distribution found for PIL

ERROR: No matching distribution found for PIL 目录 ERROR: No matching distribution found for PIL 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0…

自训练和增量训练word2vec模型

1、自己准备训练语料文件 根据自己的业务场景准备训练数据&#xff0c;比如用户在商城上的同购行为序列或同浏览行为序列。 我们希望通过自己训练业务相关的语料word2vec模型来获得词嵌入、词相关性查询等。 1.1 准备语料库文件 # 示例&#xff1a;准备自己的一个大规模的语…

ASP.NET MVC

ASP.NET MVC与.NET Framework关系 .NET Framework是一个庞大的代码库&#xff0c;能为多种编程语言提供支持(如C#、VB、F#等)。同时.NET Framework 提供了多种技术框架&#xff0c;ASP.NET MVC是.NET Framework提供的众多技术框架中的一种&#xff0c;用于开发Web应用。 .NET …

C++如何在main函数开始之前(或结束之后)执行一段逻辑?

1. 问题2. 考察的要点3. 解决策略 3.1. 方案一&#xff1a;使用GCC的拓展功能3.2. 方案二&#xff1a;使用全局变量3.3. 方案三&#xff1a;atexit 4. Demo测试 4.1. 测试代码4.2. 执行结果 5. 程序异常退出场景 5.1. 存在的问题5.2. 解决方案 5.2.1. 原理5.2.2. 示例代码5.2.3…

【计算机网络】数据链路层实验

一&#xff1a;实验目的 1&#xff1a;学习WireShark软件的抓包操作&#xff0c;分析捕获的以太网的MAC帧结构。 2&#xff1a;学习网络中交换机互相连接、交换机连接计算机的拓扑结构&#xff0c;理解虚拟局域网&#xff08;WLAN&#xff09;的通信机制。 3&#xff1a;学习…

C++内存管理(候捷)第五讲 笔记

GNU C对allocators的描述 new_allocator 和malloc_allocator&#xff0c;它们都没有特别的动作&#xff0c;无非底部调用operator new和malloc。它们没有用内存池 区别&#xff1a;::operator new是可重载的 智能型的allocator&#xff0c;使用内存池&#xff0c;分一大块然后…

栈和队列<数据结构 C版>

目录 栈&#xff08;Stack&#xff09; 栈的结构体 初始化 销毁 入栈 判空 出栈 取栈顶元素 获取栈个数 测试&#xff1a; 队列&#xff08;Queue&#xff09; 队列的结构体 单个结点 队列 初始化 销毁 入队列&#xff0c;队尾 判空 出队列&#xff0c;队头 …

HTML常用的转义字符——怎么在网页中写“<div></div>”?

一、问题描述 如果需要在网页中写“<div></div>”怎么办呢&#xff1f; 使用转义字符 如果直接写“<div></div>”&#xff0c;编译器会把它翻译为块&#xff0c;类似的&#xff0c;其他的标签也是如此&#xff0c;所以如果要在网页中写类似于“<div…

计算机网络(Wrong Question)

一、计算机网络体系结构 1.1 计算机网络概述 D 注&#xff1a;计算机的三大主要功能是数据通信、资源共享、分布式处理。&#xff08;负载均衡、提高可靠性&#xff09; 注&#xff1a;几段链路就是几段流水。 C 注&#xff1a;记住一个基本计算公式&#xff1a;若n个分组&a…

Qt源码交叉编译带openssl的Qt版本

一.背景 近期项目由于对接的后台服务是https的&#xff0c;之前交叉编译的Qt是不带openssl的&#xff0c;为了能支持https&#xff0c;必须要重新编译Qt。 二.环境 环境准备&#xff1a; Ubuntu版本 &#xff1a;18.04&#xff1b; openssl 版本&#xff1a;1.1.1.g&#xff1b…

SQL123 SQL类别高难度试卷得分的截断平均值

题目 自测代码 drop table if exists examination_info; CREATE TABLE examination_info (id int PRIMARY KEY AUTO_INCREMENT COMMENT 自增ID,exam_id int UNIQUE NOT NULL COMMENT 试卷ID,tag varchar(32) COMMENT 类别标签,difficulty varchar(8) COMMENT 难度,duration i…