微服务项目:尚融宝(20)(后端搭建:OSS文件上传整合)

简介: 为了解决海量数据存储与弹性扩容,项目中我们采用云存储的解决方案- 阿里云OSS。

认清现实,放弃幻想,准备斗争


阿里云存储OSS



一、开通“对象存储OSS”服务



为了解决海量数据存储与弹性扩容,项目中我们采用云存储的解决方案- 阿里云OSS。

 

1、开通“对象存储OSS”服务



c7dc09481b074930a4e6a8c56ef25175.png5fe39d26c6734827a63cc1f0d2624ccd.png


2、进入管理控制台


513d2f90404c4f71a8b8d5b80baa46c8.png


二、控制台使用



1、创建Bucket


命名:srb-file

读写权限:公共读


2、上传默认头像


创建文件夹avatar,上传默认的用户头像


be2b4f468a7048819693df21d067b461.png


三、使用RAM子用户



1、进入子用户管理页面


a440d04be8614fd7b5260285769c7689.png7a66c3bfdadc425d8ac35531d2718d88.png



2、添加用户


4c0ea0903ec94c15b1764eed5c198c32.png


3、获取子用户key


AccessKeyId, AccessKeySecret


4、设置用户权限


AliyunOSSFullAccess


d798ece0d3c14ee7842d514b438bd432.png


一、使用SDK



在OSS的概览页右下角找到“Bucket管理”,点击“OSS学习路径”



8f249f9eadde470ca8b7f8fc18d7a4fe.png


点击“Java SDK”进入SDK开发文档


18a2e40419194d7f931ac3396a3138e3.png


二、创建测试项目



1、创建Maven项目


com.atguigu

aliyun-oss


2、配置pom


7843eb561d0d4a03b43289e70f033222.png


<dependencies>
    <!--aliyunOSS-->
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>3.10.2</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>


三、测试用例

1、创建Bucket


86553dccbc80433f8fb0370dc5347ed8.png

public class OSSTest {
    // Endpoint以杭州为例,其它Region请按实际情况填写。
    String endpoint = "your endpoint";
    // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    String accessKeyId = "your accessKeyId";
    String accessKeySecret = "your accessKeySecret";
    String bucketName = "srb-file";
    @Test
    public void testCreateBucket() {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 创建存储空间。
        ossClient.createBucket(bucketName);
        // 关闭OSSClient。
        ossClient.shutdown();
    }
}


2、判断bucket是否存在


@Test
public void testExist() {
    // 创建OSSClient实例。
    OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    boolean exists = ossClient.doesBucketExist(bucketName);
    System.out.println(exists);
    // 关闭OSSClient。
    ossClient.shutdown();
}



3、设置bucket访问权限


@Test
public void testAccessControl() {
    // 创建OSSClient实例。
    OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    // 设置存储空间的访问权限为:公共读。
    ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
    // 关闭OSSClient。
    ossClient.shutdown();
}



什么是对象存储OSS
OSS的全称是:Object Storage Service;即对象存储服务。

在数据存储领域,存储数据的主要方法有三种: 文件、块和对象。


简单来说,对象的功能是模块化的单元,每个对象都充当自包含的存储库,其中包含描述权限、隐私、证券、意外事件和其他信息等详细信息的元数据。例如,它类似于一张照片,其中可能包含描述用于拍摄照片的相机设置以及拍摄时间和地点的元数据。

将OSS与传统的存储方式进行对比


传统上,Web 应用程序使用文件系统和数据库在后端存储用户数据。很简单,结构化数据进入数据库,其他任何东西进入文件系统。这很容易管理,因为很少有应用程序生成非结构化数据——大多数应用程序在表单中接受用户输入并将数据保存到数据库中。


然而,时代在变,随着社交媒体、云存储、数据分析平台和其他计算范式的出现,越来越多的非结构化数据被推送到互联网上。

DC 在 2014 年进行的一项研究预测,到 2020 年,全球创建和复制的非结构化数据将达到 44 泽字节,即每年 44 万亿千兆字节。2015 年非结构化数据已经占所有数字数据的 90%

所以,与其他计算范式一样,存储系统需要不断发展才能满足这一新的非结构化数据浪潮席卷互联网。

自现代计算开始以来人们一直在使用的存储机制,即文件系统,扩展比较困难;不仅需要管理文件系统强加的不必要的元数据和层次结构,还需要处理其他事情,例如备份管理。

而且,仅仅收集非结构化数据是不够的。我们还需要应用某种级别的组织来理解数据。文本分析、自动分类、自动标记等技术对于从我们收集的所有非结构化数据中获得商业意义至关重要。具有固定布局的文件系统使其难以实现。

我们最初接触到的文件系统不是为 HTTP(S) 设计的,而是为人类设计的。在文件系统中共享和管理文件很难以编程方式处理。处理文件流和可能的边界情况很容易出错,需要花费大量的时间和精力。

为了绕过这一切,需要一些新的东西。从头开始设想,始终关注新的需求。这导致了对象存储。

相关实践学习
对象存储OSS快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
相关文章
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
684 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
11月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
544 41
|
人工智能 小程序 NoSQL
【一步步开发AI运动小程序】二十一、如何将AI运动项目配置持久化到后端?
本文介绍基于云智「Ai运动识别引擎」的运动配置持久化方案,旨在优化小程序或Uni APP中AI运动识别能力。通过将运动检测参数(如`Key`、`Name`、`TickMode`、`rules`或`samples`)持久化到后端,可避免因频繁调整运动参数而重新发布应用,提升用户体验。持久化数据结构支持规则和姿态样本存储,适用于关系数据库、文件或文档数据库(如MongoDB)。此外,云智还提供运动自动适配工具及「AI乐运动」产品,助力快速实现AI体育、全民健身等场景。
|
SQL JavaScript 安全
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
585 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
|
算法 Java Linux
java制作海报五:java 后端整合 echarts 画出 折线图,项目放在linux上,echarts图上不显示中文,显示方框口口口
这篇文章介绍了如何在Java后端整合ECharts库来绘制折线图,并讨论了在Linux环境下ECharts图表中文显示问题。
574 1
|
存储 前端开发 Java
Java后端如何进行文件上传和下载 —— 本地版(文末配绝对能用的源码,超详细,超好用,一看就懂,博主在线解答) 文件如何预览和下载?(超简单教程)
本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。
6019 2
|
前端开发 程序员 API
从后端到前端的无缝切换:一名C#程序员如何借助Blazor技术实现全栈开发的梦想——深入解析Blazor框架下的Web应用构建之旅,附带实战代码示例与项目配置技巧揭露
【8月更文挑战第31天】本文通过详细步骤和代码示例,介绍了如何利用 Blazor 构建全栈 Web 应用。从创建新的 Blazor WebAssembly 项目开始,逐步演示了前后端分离的服务架构设计,包括 REST API 的设置及 Blazor 组件的数据展示。通过整合前后端逻辑,C# 开发者能够在统一环境中实现高效且一致的全栈开发。Blazor 的引入不仅简化了 Web 应用开发流程,还为习惯于后端开发的程序员提供了进入前端世界的桥梁。
2251 1
|
存储 运维 小程序
后端开发零负担!揭秘支付宝小程序云开发的高效与安全,你的项目也能飞速上线?
【8月更文挑战第27天】支付宝小程序云开发是由阿里云提供的集成开发环境,助力开发者高效、安全地构建小程序后端服务,免去服务器搭建,显著提高开发效率并降低运维成本。它集成了云函数、云数据库及云存储等功能,便于快速搭建后端逻辑。例如,仅需简单几行代码即可创建HTTP接口或进行数据管理。这使得开发者能更专注于业务逻辑和用户体验优化,同时平台还提供了强大的安全保障措施,确保数据安全和用户隐私。无论对于初创团队还是成熟企业,支付宝小程序云开发都能有效提升产品迭代速度和市场竞争力。
465 1
|
前端开发 Java Shell
后端项目打包上传服务器部署运行记录
后端项目打包上传服务器部署运行记录
467 0
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
360 0
下一篇
开通oss服务