【OSS】阿里云对象存储OSS入门使用 JAVA SDK上传与下载 简单测试案例

2023-10-30

本文包括阿里云对象存储OSS入门使用,上传与下载以及简单测试案例的实现。

首先,在阿里云中找到对象存储OSS

点击侧边栏的Bucket列表,创建Bucket列表

根据需求选择配置 

创建完成后,点击进入查看概览,找到对应的Endpoint,在后面的测试中需要用到

 所需要的access key可以通过点击头像,accesskey管理获得

为了保证账号的安全,这里使用子用户accesskey

进入RAM 访问控制,点击侧边栏身份管理中的用户,然后创建用户。需勾选Open API调用访问

 ​​​​​​​

 进入创建好的子用户,在下方点击创建accesskey

将生成的keyid与keySecret保存好,后面测试中需要使用

然后进行SDK测试,导入Maven依赖

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

上传文件

 void upload() {
        // 按照参数填写
        // 填写endpoint
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 填写accessKeyId
        String accessKeyId = "yourAccessKeyId";
        // 填写accessKeySecret
        String accessKeySecret = "yourAccessKeySecret";
        // 填写Bucket名称
        String bucketName = "bucket";
        // 填写上传到的完整路径
        String objectName = "test.txt";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        try {
            String content = "Hello OSS";
            //上传
            ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }

进入文件管理查看,上传成功

 下载

@Test
    void download() {
        // 按照参数填写
        // 填写endpoint
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 填写accessKeyId
        String accessKeyId = "yourAccessKeyId";
        // 填写accessKeySecret
        String accessKeySecret = "yourAccessKeySecret";
        // 填写Bucket名称
        String bucketName = "bucket";
        // 填写上传到的完整路径
        String objectName = "test.txt";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        try {
            // 调用ossClient.getObject返回一个OSSObject实例,该实例包含文件内容及文件元信息。
            OSSObject ossObject = ossClient.getObject(bucketName, objectName);
            // 调用ossObject.getObjectContent获取文件输入流,可读取此输入流获取其内容。
            InputStream content = ossObject.getObjectContent();
            if (content != null) {
                BufferedReader reader = new BufferedReader(new InputStreamReader(content));
                while (true) {
                    String line = reader.readLine();
                    if (line == null) break;
                    System.out.println("\n" + line);
                }
                content.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

下载成功

详细操作可以参考官方文档Java SDK快速入门 - 对象存储 OSS - 阿里云

文件上传应用实例

本案例基于spring boot 2.6.6

先写一个Service类, 逻辑与上面的操作类似,这里使用MultipartFile上传文件,在上传完成后返回图片地址

@Service
public class OssServiceImpl implements OssService {
    @Override
    public String uploadFile(MultipartFile multipartFile) {
        //这里根据自己的参数设置
        String endpoint = ”“;
        String accessKeyId = ”“;
        String accessKeySecret = ”“;
        String bucketName = ”“;

        // 创建OSSClient实例
        OSS oss = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        try {
            //获取文件输入流
            InputStream inputStream = multipartFile.getInputStream();
            //获取文件名
            String originalFilename = multipartFile.getOriginalFilename();
            //设置文件路径,根据日期区分文件夹
            String dateTime = new SimpleDateFormat("yyyy/MM/dd").format(new Date());
            //拼接上传路径
            originalFilename = dateTime + "/" + originalFilename;
            //上传
            oss.putObject(bucketName, originalFilename, inputStream);
            //返回上传的文件的访问地址
            String url = "https://" + bucketName + "." + endpoint + "/" + originalFilename;
            return url;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }finally{
            //关闭oss
            if (oss != null) {
                oss.shutdown();
            }
        }

    }
}

一个简单的Controller

@RestController
@CrossOrigin
@RequestMapping("/oss")
public class OssController {

    @Autowired
    private OssService ossService;

    @PostMapping("upload")
    public String uploadFile(MultipartFile multipartFile){
        //调用service类
        return ossService.uploadFile(multipartFile);
    }

}

 测试图片上传

通过返回的URl即可访问图片,在控制台中也能找到上传的文件 

注意:使用OSS服务,当流量或存储空间达到一定数量时会产生费用,大家可以参考文档中的收费标准。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【OSS】阿里云对象存储OSS入门使用 JAVA SDK上传与下载 简单测试案例 的相关文章

  • 如何在 JPA 中使用枚举

    我有一个电影租赁系统的现有数据库 每部电影都有一个评级属性 在 SQL 中 他们使用约束来限制该属性的允许值 CONSTRAINT film rating check CHECK rating text text OR rating tex
  • 哪个类调用了我的静态方法?

    假设我有一个带有静态方法的 Java 类 如下所示 class A static void foo Which class invoked me 进一步假设 A 类有任意数量的子类 class B extends A class C ext
  • 按下按钮时清除编辑文本焦点并隐藏键盘

    我正在制作一个带有编辑文本和按钮的应用程序 当我在 edittext 中输入内容然后单击按钮时 我希望键盘和焦点在 edittext 上消失 但我似乎无法做到这一点 我在 XML 中插入了这两行代码 android focusable tr
  • Spring Data:限制自定义查询的结果

    在我的 Spring 数据存储库中 我 必须 使用自定义查询 Query注解 我知道我可以限制这样的命名查询中的结果数量 Iterable
  • 警告:跳过条目,因为它不是绝对 URI。 NetBeans 中的 GlassFish

    我成功安装了 GlassFish 但是 当我启动服务器时 我收到两条警告消息 警告 跳过条目 因为它不是绝对 URI 那是关于什么的 Launching GlassFish on Felix platform Aug 09 2014 10
  • 隐藏类的 System.out.print 调用

    我正在使用 java 库 jar 文件 该文件的作者放入了一堆System out print and System out printlns 有没有办法隐藏特定对象的这些消息 编辑 看起来jar文件似乎正在创建一堆线程 并且每个线程都有它
  • 根据哈希值确认文件内容

    我需要 检查完整性 content文件数量 文件将写入 CD DVD 可能会被复制多次 这个想法是识别正确复制的副本 在从 Nero 等中删除它们之后 我对此很陌生 但快速搜索表明Arrays hashCode byte http down
  • Jodatime 日期格式

    是否可以格式化 JodaTime 日期 这是代码 private static LocalDate priorDay LocalDate date1 do date1 date1 plusDays 1 while date1 getDayO
  • 总结二维数组

    鉴于我当前的程序 我希望它在用户输入所有值后计算每列和每行的总和 我当前的代码似乎只是将数组的值加倍 这不是我想要做的 例如 如果用户输入具有以下值 1 2 3 2 3 4 3 4 5 的 3x3 矩阵 则看起来就像我在下面的程序中对其进行
  • Java 反射:如何检索匿名内部类?

    我在另一个类中有一个匿名内部类 SomeClass Both SomeClass class getClasses and SomeClass class getDeclaredClasses 返回空数组 我在中找不到一些关于此的提示Cla
  • activemq 的优先级

    我们目前正在使用 JMS 和 activemq 5 5 1 开发一个应用程序 我们想为某些消息定义更高的优先级 这将使它们首先被消耗 设置生产者和消费者后 通过spring 3 1 JMSTemplate 优先级并不能完全发挥作用 事实上
  • wsdl 没有服务元素

    我必须使用 WCF Web 服务并获得 WSDL 外部的 因此无法控制 WSDL 在 WSDL 定义中 我没有找到包含服务 端口和地址元素的服务元素 WSDL 中不存在这种情况正常吗 这对于 WCF WSDL 来说很常见吗 我正在尝试使用轴
  • java Runtime.getRunTime().exec 和通配符?

    我正在尝试使用删除垃圾文件 Process p Runtime getRuntime exec 只要我不使用通配符 它 就可以正常工作 即 Process p Runtime getRuntime exec bin rm f specifi
  • 处理照片上传的最佳方式是什么?

    我正在为一个家庭成员的婚礼制作一个网站 他们要求的一个功能是一个照片部分 所有客人都可以在婚礼结束后前往并上传他们的照片 我说这是一个很棒的想法 然后我就去实现它 那么只有一个问题 物流 上传速度很慢 现代相机拍摄的照片很大 2 5 兆 我
  • 链表中的虚拟节点

    问 什么时候使用它们 作业问题 列表中的第一个和最后一个节点 有时用作列表中的第一个和最后一个节点 从未用作列表中的第一个和最后一个节点 维基百科说 哨兵节点是与链接一起使用的专门指定的节点 列表和树作为遍历路径终止符 哨兵节点的作用是 不
  • Java .split("|") 不工作

    我刚刚遇到了一个问题分割法 http docs oracle com javase 6 docs api java lang String html split 28java lang String 29for 字符串不适用于字符 作为一个
  • Apache HttpClient TCP Keep-Alive(套接字保持活动)

    我的 http 请求需要太多时间才能被服务器处理 大约 5 分钟 由于连接闲置 5 分钟 代理服务器将关闭连接 我正在尝试在 Apache DefaultHttpClient 中使用 TCP Keep Alive 来使连接长时间处于活动状态
  • Microsoft JDBC 中的 JTDS 属性相当于什么?

    我正在将 JTDS 连接更改为 Microsoft JDBC 并且我看到存在于http jtds sourceforge net faq html http jtds sourceforge net faq htmlMicrosoft JD
  • 如何在 Servlet 中打开弹出窗口,然后重定向页面

    我想在调用 servlet 时打开一个弹出窗口 然后想将 servlet 重定向到某个 jsp page 这就是我所做的 protected void doGet HttpServletRequest request HttpServlet
  • 安卓框架?

    是否有任何框架比构建 Android 应用程序更容易 您会对其中一个感兴趣吗 很快就会有 我正在开发 DroidFu 一个 Android 共享库 它将为您提供 活动 和服务 中直接提供大量实用功能 例如生成列表和错误对话框 检查 Inte

随机推荐

  • 短信发送(java版)

    如果通过阿里云短信服务产品发送短信 需要做以下操作 1 登录阿里云 开启短信服务 2 创建短信api模板及短信内容类型 定义短信内容的时候如果有变量 则使用如 code 的形式 如果使用其他内容则查看产品文档 3 获取阿里云ACCESS I
  • DOPI 海思入门级开发板Hi3516EV200 开发板

    自我介绍 大家好 我是DOPI 音译 独派 中文名 行动派 叫我 独派 行动派都可以 很长一段时间里 海思的芯片 都只出现在大厂的产品里 很少出现在开源的项目中 经过DOPI的努力 现在海思的芯片 也可以开源 可以可以用在智能家电 智能门锁
  • SpringBoot 读取配置文件的值为 Infinity

    1 配置信息 appid 6E212341234 2 获取方式 Value admin private String admin 获取到结果 Infinity 3 修改方案 配置信息上加 号 appid 6E212341234 yml中使用
  • 国内远程控制市场竞争激烈 TeamViewer一马当先

    近年来 疫情的反复给很多行业带来了负面影响 但是远程控制软件却因为远程办公的流行而备受众多企业的青睐 远程控制2022年市场也将高达30亿元 在此大好形势下 多款远程控制软件纷纷争夺国内市场 其中表现非常出色的当属TeamViewer 据埃
  • 卷(三)C++___二刷

    Chapter 13 Basic Object oriented Programming 13 1 Welcome to object oriented programming Object oriented programming OOP
  • 您不是订单管理的定向开发者_全面升级投放和营销能力 华为应用市场商业推广助力开发者高效增长...

    9月10日 2020华为开发者大会在东莞松山湖盛大开幕 9月11日下午 在 共舟前行 创新未来 华为应用市场商业推广分论坛上 华为应用市场商业推广产品部部长与现场开发者及合作伙伴分享过去半年取得的成绩 并共同探讨了合作伙伴如何加速获量成长以
  • DNS部署与安全

    1 DNS Domain Name Service 域名服务 作用 为客户机提供域名解析服务器 2 域名组成 2 1 域名组成概述 如 www sina com cn 是一个域名 从严格意义讲 sina com cn 才被称为域名 全球唯一
  • GBDT 梯度提升树(Gradient Boosting Decision Tree)(万字全解)

    目录 一 相关基础知识 二 调用sklearn实现GBDT 1 梯度提升回归树 2 梯度提升分类树 三 参数 属性详解 1 迭代过程涉及的参数 1 n estimators 迭代次数 2 learning rate 学习率参数 3 init
  • Simon Video Course Task 2

    Lesson 01 The tasks This an IELTS training course training has five steps Understand the task what we need to do Break t
  • python硬币识别_OpenCV硬币检测和自动结果检查

    我正在做一个硬币识别项目 我遇到的第一件事就是从图像中正确提取硬币 即使是从非常简单的图像中 有很多很好的硬币检测工作方法 但我认为所有这些都需要人工检查后应用 我测试了其中两种 HoughCircles和threshold及其后的find
  • 智能交通系统调研

    背景 随着微电子技术系统 MEMS 和低功耗的信息交互技术的快速发展 如今已经能够部署大规模无线传感器网络 无线传感器网络是在需要被监视的地点附近或是内部随机地 密集地部署大量的无线传感器结点 传感器网络的应用是多种多样的 不同于传统的无线
  • linux怎么将命令变成汉语,在Linux系统中把firefox火狐游览器转成中文语言的两种方法...

    如果你的Linux操作系统中firefox火狐游览器不是中文语言 你现在要把它们改成中文语言 有两种方法可以实现 其中第二种方法适合所有的Linux发行版 第一种方法 采用系统命令处理 如果所用的Linux系统是Ubuntu Deepin等
  • 什么是原型、原型链?原型和原型链的作用(有图方便理解)

    原型 JS声明构造函数 用来实例化对象的函数 时 会在内存中创建一个对应的对象 这个对象就是原函数的原型 构造函数默认有一个prototype属性 prototype的值指向函数的原型 同时原型中也有一个constructor属性 cons
  • Python数值分析(杜普伊特-福希海默方法)一维固定透射率河流畜水层

    杜普伊特 福希海默方法 所有地下水流量都是三维的 但出于建模目的 流量可以近似为一维或二维 在区域尺度上 与面积相比 大多数含水层相对较薄 因此被称为浅层含水层 在这样的含水层中 流动主要是水平的 并且可以近似为水平面上的二维 水平流量由流
  • 【C语言】结构体的大小是如何计算的?(结构体对齐)

    目录 一 使用sizeof计算结构体的大小 二 影响结构体大小的因素 1 结构体成员的类型 2 结构体成员的对齐方式 3 结构体成员的顺序 三 利用结构体对齐规律计算结构体大小 1 结构体的对齐规则 2 结构体对齐的原因 1 gt 平台原因
  • 使用元学习来进行少样本图像分类

    点击上方 AI公园 关注公众号 选择加 星标 或 置顶 作者 Etienne 编译 ronghuaiyang 导读 你并不总是有足够的图像来训练一个深度神经网络 下面是教你如何通过几个样本让模型快速学习的方法 你并不总是有足够的图像来训练一
  • Mac实践--MAC搭建FTP服务器

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Mac os 搭建FTP SFTP服务器 由于mac拥有自带的FTP工具 因此其实不需要借助其他工具 搭建更加方便 如果你访问过较新版本的Mac OS X中的 共享首选项
  • rockchip-rockxxdemo编译说明

    bin bash ARM编译器路径 20210708 1 修改为安装好路径 2 也可以修改为rv1126本身安装的编译器路径 GCC COMPILER PATH opts gcc arm 8 3 2019 03 x86 64 arm lin
  • Java Map和Set

    1 Map Map是一个接口 该类没有继承自Collection 该类中存储的是
  • 【OSS】阿里云对象存储OSS入门使用 JAVA SDK上传与下载 简单测试案例

    本文包括阿里云对象存储OSS入门使用 上传与下载以及简单测试案例的实现 首先 在阿里云中找到对象存储OSS 点击侧边栏的Bucket列表 创建Bucket列表 根据需求选择配置 创建完成后 点击进入查看概览 找到对应的Endpoint 在后