谷粒商城实战笔记-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.mzph.cn/news/875600.shtml

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

相关文章

自定义 RAG 工作流:在 IDE 中结合 RAG 编排,构建可信的编码智能体

构建编码智能体并非一件容易的事。结合我们在 AutoDev、ArchGuard Co-mate、ChocoBuilder 等智能体项目的经验&#xff0c;我们开始思考在 Shire 语言中提供一种新的 RAG 工作流。结合我们先前构建的 IDE 基础设施&#xff08;代码生成、代码校验、代码执行等接口&#xff09;&…

基于PaddleClas的人物年龄分类项目

目录 一、任务概述 二、算法研发 2.1 下载数据集 2.2 数据集预处理 2.3 安装PaddleClas套件 2.4 算法训练 2.5 静态图导出 2.6 静态图推理 三、小结 一、任务概述 最近遇到个需求&#xff0c;需要将图像中的人物区分为成人和小孩&#xff0c;这是一个典型的二分类问题…

AI学习指南机器学习篇-SOM在数据聚类和可视化中的应用

AI学习指南机器学习篇 - SOM在数据聚类和可视化中的应用 引言 在机器学习领域&#xff0c;数据聚类和可视化是非常重要的任务。传统的聚类算法如K-means、DBSCAN等在一些场景下表现良好&#xff0c;但对于高维数据的聚类和可视化而言&#xff0c;它们的效果会受到限制。Self-…

Leetcode3219. 切蛋糕的最小总开销 II

Every day a Leetcode 题目来源&#xff1a;3219. 切蛋糕的最小总开销 II 解法1&#xff1a;贪心 谁的开销更大&#xff0c;就先切谁&#xff0c;并且这个先后顺序与切的次数无关。 代码&#xff1a; /** lc appleetcode.cn id3219 langcpp** [3219] 切蛋糕的最小总开销 I…

ubuntu20.04服务器搭建mongodb7

安装参考自mongo官网&#xff1a;在 Ubuntu 上安装 MongoDB Community Edition - MongoDB 手册 v7.0 MongoDB 版本 本教程安装的是 MongoDB 7.0 Community Edition。想要安装不同版本的 MongoDB Community Edition&#xff0c;请移步本页面左上角的版本下拉菜单&#xff0c;选…

ubuntu递归下载deb安装包,解决离线依赖问题

ubuntu递归下载安装包 主要针对离线环境的电脑安装deb包。 将下面的build-essential换成自己需要安装的包&#xff0c;虽然下面代码会递归下载依赖安装包&#xff0c;但是在离线环境下仍然可能会出现依赖包为配置问题。 因此&#xff0c;根据报错&#xff0c;手动递归下载报错…

【SQL 新手教程 1/20】SQL语言MySQL数据库 简介

&#x1f497; 什么是SQL&#xff1f;⭐ (Structured Query Language) 结构化查询语言&#xff0c;是访问和处理关系数据库的计算机标准语言 无论用什么编程语言&#xff08;Java、Python、C……&#xff09;编写程序&#xff0c;只要涉及到操作关系数据库都必须通过SQL来完成 …

4招清洁法,清理电脑无死角,焕然一新效率高

随着时间的积累&#xff0c;电脑内部可能会堆积起大量的垃圾文件、缓存数据和无用程序。因此&#xff0c;定期清理电脑是很有必要的。为了让你的电脑重新焕发生机&#xff0c;提高工作效率&#xff0c;本文将为你介绍4招实用的清洁法&#xff0c;助你轻松清理电脑死角&#xff…

js 数组常用函数总结

目录 1、push 2、unshif 3、pop 4、shift 5、concat 6、slice 7、splice 8、join 9、indexOf 10、lastIndexOf 11、forEach 12、map 13、filter 14、reduce 15、sort 16、reverse 17、includes 18、some 19、every 20、toString 21.、find 22、findLast 23、…

JavaWeb学习——请求响应、分层解耦

目录 一、请求响应学习 1、请求 简单参数 实体参数 数组集合参数 日期参数 Json参数 路径参数 总结 2、响应 ResponseBody&统一响应结果 二、分层解耦 1、三层架构 三层架构含义 架构划分 2、分层解耦 引入概念 容器认识 3、IOC&DI入门 4、IOC详解 …

Cadence23学习笔记(十四)

ARC就是圆弧走线的意思&#xff1a; 仅打开网络的话可以只针对net进行修改走线的属性&#xff1a; 然后现在鼠标左键点那个走线&#xff0c;那个走线就会变为弧形&#xff1a; 添加差分对&#xff1a; 之后&#xff0c;分别点击两条线即可分配差分对&#xff1a; 选完差分对之后…

微服务实践和总结

H5原生组件web Component Web Component 是一种用于构建可复用用户界面组件的技术&#xff0c;开发者可以创建自定义的 HTML 标签&#xff0c;并将其封装为包含逻辑和样式的独立组件&#xff0c;从而在任何 Web 应用中重复使用。 <!DOCTYPE html> <html><head…

css in js 相比较 css modules 有什么好处?

CSS-in-JS 和 CSS Modules 都是用于管理 React 组件样式的流行方案&#xff0c;它们各有优势。相比 CSS Modules&#xff0c;CSS-in-JS 的主要好处包括: 动态样式&#xff1a;CSS-in-JS 可以轻松创建基于 props 或状态的动态样式&#xff0c;更灵活地处理复杂的样式逻辑。 无需…

【vue3|第18期】Vue-Router路由的三种传参方式

日期:2024年7月17日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.408…

EtherNet/IP网络基础

EtherNet/IP&#xff08;Ethernet Industrial Protocol&#xff09;是一种用于工业自动化的通信协议&#xff0c;基于以太网技术。它允许设备和控制系统之间进行高效的数据交换和通信。以下是EtherNet/IP网络的基础知识。 1. 什么是EtherNet/IP&#xff1f; EtherNet/IP是由O…

ctfshow SSTI注入 web369--web372

web369 这把request过滤了&#xff0c;只能自己拼字符了 ""[[__clas,s__]|join] 或者 ""[(__clas,s__)|join] 相当于 ""["__class__"]举个例子&#xff0c;chr(97) 返回的是字符 a&#xff0c;因为 97 是小写字母 a 的 Unicode 编码…

go操作aws s3

v2 官方推荐版本&#xff0c;需要go版本>1.20 安装 go get github.com/aws/aws-sdk-go-v2 go get github.com/aws/aws-sdk-go-v2/config go get github.com/aws/aws-sdk-go-v2/service/s3必要参数 bucket: 存储桶的名称 Region: 存储桶所在区域,例us-east-1 accessKey…

PHP运算符

PHP 运算符是用于执行各种操作&#xff08;如算术运算、比较、逻辑运算、字符串连接等&#xff09;的符号。在 PHP 中&#xff0c;运算符的命名主要是基于它们的功能和用法&#xff0c;而不是像变量或函数那样可以自定义名称。以下是一个关于 PHP 运算符的详细教程&#xff0c;…

unity2D游戏开发01项目搭建

1新建项目 选择2d模板,设置项目名称和存储位置 在Hierarchy面板右击&#xff0c;create Empty 添加组件 在Project视图中右键新建文件夹 将图片资源拖进来&#xff08;图片资源在我的下载里面&#xff09; 点击Player 修改属性&#xff0c;修好如下 点击Sprite Editor 选择第二…

Angular由一个bug说起之八:实践中遇到的一个数据颗粒度的问题

互联网产品离不开数据处理&#xff0c;数据处理有一些基本的原则包括&#xff1a;准确性、‌完整性、‌一致性、‌保密性、‌及时性。‌ 准确性&#xff1a;是数据处理的首要目标&#xff0c;‌确保数据的真实性和可靠性。‌准确的数据是进行分析和决策的基础&#xff0c;‌因此…