谷粒商城实战笔记-61-商品服务-API-品牌管理-云存储开通与使用

文章目录

  • 一,图片云存储
  • 二,阿里云OSS
    • 1,OSS
    • 2,基于OSS的文件上传架构
    • 3,Java中使用OSS

一,图片云存储

在这里插入图片描述

这张图展示了文件存储的几种常见模式:

  • 普通上传
  • 分布式情况下的普通上传
  • 使用自建服务器
  • 云存储服务的情况
  1. 普通上传:在这种情况下,浏览器直接将文件上传给商品服务,然后由商品服务保存文件。这种方式简单明了,但是存在单点故障风险,因为所有文件都在同一台服务器上存储。

  2. 分布式情况下的普通上传:这是一种改进后的版本,多个商品服务共享同一个文件存储空间。然而,这种方案仍然需要自己维护文件存储基础设施,包括搭建和维护 FastDFS 或 vsftpd 文件系统,这可能会带来较高的前期成本和维护负担。

  3. 自建服务器:商品服务将文件上传至自建的文件存储服务器。虽然这种方式可以实现一定的分布式的文件存储,但它需要自行搭建和维护,包括硬件投入、网络带宽、存储容量规划等,因此初期成本较高,且后期维护成本也不低。

  4. 云存储:云存储(如阿里云对象存储或七牛云存储)提供了一种即开即用的服务,不需要自己购买和维护硬件设备,只需要按需付费。这种方式降低了前期投入,同时也减少了运维压力。

二,阿里云OSS

1,OSS

阿里云OSS(Object Storage Service)是阿里云提供的一种大规模、安全、低成本、高可靠的云存储服务。OSS使用了一套特有的资源术语来描述其服务中的各种组件和概念。

下面是一些主要的资源术语及其含义:

  1. Bucket(存储空间):

    • Bucket 是您用于存储对象(Object)的容器。
    • 所有的对象都必须隶属于某个存储空间。
    • 存储空间名称在整个OSS中是唯一的,一旦创建就不能更改名称,也不能移动对象到其他存储空间。
  2. Object(对象/文件):

    • Object 是OSS存储数据的基本单元,也被称为OSS的文件。
    • 每个对象都有一个键(Key),用于唯一标识该对象。
    • 对象由数据(Data)和元数据(Metadata)组成。
    • 数据可以是任何格式的内容,比如文本、图片、视频等。
    • 元数据是对对象的一些描述信息,例如Content-Type、创建时间等。
  3. Key(对象名/键):

    • Key 是用于唯一标识一个对象的字符串。
    • Key 的长度必须介于1到1023字节之间,采用UTF-8编码。
    • Key 的命名规则比较宽松,但推荐使用有意义的命名以便于管理和检索。
  4. Endpoint(访问域名):

    • Endpoint 是OSS对外提供服务的访问地址。
    • 每个地域(Region)都有自己的Endpoint。
    • 用户通过Endpoint来访问存储在特定地域的Bucket。
  5. Region(地域):

    • Region 是指阿里云在全球部署的物理位置。
    • 在每个Region内部署有一个或多个数据中心。
    • 用户可以选择在哪个Region创建Bucket。
  6. Security(安全):

    • OSS 提供多种安全措施来保护数据的安全性。
    • 包括但不限于身份验证、访问控制列表(ACL)、Bucket Policy、服务器端加密等。
  7. Versioning(版本控制):

    • 版本控制是指OSS为每个对象保留多个版本的能力。
    • 开启版本控制后,无论何时上传同名对象,都会作为一个新版本被保存下来。
  8. Lifecycle Management(生命周期管理):

    • 生命周期管理是OSS提供的用于自动管理对象生命周期的规则集。
    • 可以设置对象在一定条件下的过期、归档或转换存储类型等。
  9. CORS(跨源资源共享):

    • CORS 是一种安全机制,用于允许跨域的HTTP请求。
    • 可以配置Bucket的CORS规则来允许跨域访问。
  10. Logging(日志记录):

    • OSS 支持记录Bucket的操作日志,帮助用户追踪Bucket上的操作行为。

2,基于OSS的文件上传架构

在这里插入图片描述

  1. 用户请求上传Policy:用户(可以是网页上的用户或者移动设备上的用户)向应用服务器发送请求,要求获取上传Policy。这个过程通常是在前端发起的,例如在网页上点击“上传文件”按钮时。

  2. 应用服务器返回上传Policy:应用服务器收到用户的请求后,生成一个上传Policy并返回给用户。上传Policy是一段JSON格式的数据,包含了允许用户上传文件的一些限制条件,比如密钥、最大文件大小、可上传的文件类型等。

  3. 用户直接上传数据到OSS:用户拿到上传Policy后,就可以直接将数据上传到OSS了。这里需要注意的是,用户并不是直接将数据传给应用服务器,而是通过OSS提供的API接口将数据上传到云端。这样做的好处是可以减轻应用服务器的压力,同时也能保证数据的安全性和可靠性。

总的来说,这种架构设计使得用户可以直接与OSS进行交互,而不需要经过应用服务器,从而提高了系统的性能和稳定性。

同时,由于上传Policy的存在,也可以对用户的上传行为进行一定的控制和管理。

3,Java中使用OSS

在Java中,可以使用阿里云的OSS SDK来操作对象存储服务(OSS)。以下是一个简单的示例,展示了如何使用OSS SDK上传文件到OSS:

首先,你需要在你的项目中添加OSS SDK的依赖。如果你使用的是Maven,你可以在pom.xml文件中添加以下依赖:

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

然后,你可以创建一个OSSClient实例,并使用它来上传文件:

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;public class OSSSample {public static void main(String[] args) {String endpoint = "<YourEndpoint>";String accessKeyId = "<YourAccessKeyId>";String accessKeySecret = "<YourAccessKeySecret>";String bucketName = "<YourBucketName>";String objectName = "<YourObjectName>";String localFile = "<YourLocalFile>";// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 上传本地文件到OSS。ossClient.putObject(bucketName, objectName, localFile);// 关闭OSSClient。ossClient.shutdown();System.out.println("Upload success.");}
}

在这个示例中,你需要替换<YourEndpoint><YourAccessKeyId><YourAccessKeySecret><YourBucketName><YourObjectName><YourLocalFile>为你的实际值。

注意:上传文件后,不要忘记关闭OSSClient。

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

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

相关文章

vue3-print-nb实现打印pdf分页

安装插件 npm install vue3-print-nb --savevue3 引入 import print from vue3-print-nb // 打印插件 app.use(print)使用 这里使用的是对象配置方式 对象配置方式——在js中定义一个对象&#xff0c;对象中可配置打印区域相关属性&#xff0c;在需要打印的单据内容最外面的…

Java----反射

什么是反射&#xff1f; 反射就是允许对成员变量、成员方法和构造方法的信息进行编程访问。换句话来讲&#xff0c;就是通过反射&#xff0c;我们可以在不需要创建其对象的情况下就可以获取其定义的各种属性值以及方法。常见的应用就是IDEA中的提示功能&#xff0c;当我…

【FAS】《The Research of RGB Image Based Face Anti-Spoofing》

文章目录 1、原文2、相关工作3、基于特征解耦的人脸活体检测算法3.1、方法3.2、实验结果 4、基于解构与组合的人脸活体检测方法4.1、方法4.2、实验 5、作者总结6、结论&#xff08;own&#xff09;7、附录7.1、CycleGAN7.2、InfoGAN7.3、3D Face 1、原文 [1]张克越.基于RGB图像…

民大食堂用餐小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商家管理&#xff0c;档口号管理&#xff0c;商家餐品管理&#xff0c;餐品种类管理&#xff0c;购物车管理&#xff0c;订单信息管理 微信端账号功能包括&#xff1a;系统首页&a…

跟着丑萌气质狗学习WPF——自定义按钮模板以及设置触发器

自定义按钮模板以及设置触发器 <Window x:Class"WPF_Study_Solution.Window4"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.micros…

多线程-进阶2

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 1.CAS 1.1CAS全称:Compare and swap 比较内存和cpu寄存器中的内容,如果发现相同,就进行交换(交换的是内存和另一个寄存器的内容) 一个内存的…

AB安全产品详解Guard master Safety Products

AB安全产品详解Guard master Safety Products

ubuntu安装并配置flameshot截图软件

参考&#xff1a;flameshot key-bindins 安装 sudo apt install flameshot自定义快捷键 Settings->Keyboard->View and Customize Shortcuts->Custom Shortcuts&#xff0c;输入该快捷键名称&#xff08;自定义&#xff09;&#xff0c;然后输入command&#xff08;…

项目负责人的实战心得:如何高效检查工作

项目负责人的实战心得&#xff1a;如何高效检查工作 前言一、检查工作的重要性二、检查工作的常见误区三、有效的检查策略四、实战案例分析五、持续改进结语 前言 在项目管理的广阔天地中&#xff0c;每一位项目负责人都像是一艘航船的舵手&#xff0c;引领着团队穿越波涛汹涌的…

全网最适合入门的面向对象编程教程:28 类和对象的Python实现-Python编程原则、哲学和规范大汇总

全网最适合入门的面向对象编程教程&#xff1a;28 类和对象的 Python 实现-Python 编程原则、哲学和规范大汇总 摘要&#xff1a; 本文主要介绍了在使用 Python 进行面向对象编程时&#xff0c;Python 异常处理的原则-“请求谅解&#xff0c;而非许可”&#xff0c;以及软件设…

指针!!C语言 字符串篇(第四篇)

目录 一. sizeof和strlen的对比 二. 数组和指针笔试题解析 2.1 一维数组 2.2 字符数组 2.3 二维数组 一. sizeof和strlen的对比 在C语言中有两个比较相似的知识点&#xff0c;就是sizeof和strlen&#xff0c;下面我们来讲一下它们两者之间有什么不同之处&#xff1f; &a…

【Vue2】3-使用Vue脚手架

目录 初始化脚手架 说明 具体步骤 模板项目的结构 关于不同版本的Vue vue.config.js配置文件 ref属性 配置项props mixin&#xff08;混入&#xff09; 插件 scoped样式 总结TodoList案例 webStorage&#xff08;浏览器本地存储&#xff09; TodoList本地存储 组…

数据链路层mac帧、mac地址,ARP协议

数据链路层&#xff1a;用于两个设备(同一种数据链路节点)之间进行传递 mac地址决定&#xff1a;当前在那&#xff0c;下一站去哪 mac协议&#xff1a; mac帧在数据链路中是如何传输的&#xff1a; ARP地址解析协议&#xff1a;IP地址解析协议 通过ip进行了路径选择&#xf…

打卡第28天------贪心算法

加油啦,一定要好好学习,刷题面试 一、买卖股票的最佳时机 II leetcode题目链接:买卖股票的最佳时机 II 题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股…

Scrum敏捷开发企业级实训:提升团队效率,推动企业创新

在当今快速变化的商业环境中&#xff0c;企业必须不断创新和快速响应市场需求&#xff0c;以保持竞争优势。Scrum敏捷开发方法作为一种高效的项目管理框架&#xff0c;已被全球众多企业采用&#xff0c;用于提高团队协作和交付速度。为了帮助企业更好地理解和应用Scrum&#xf…

【每日一题】【回溯+二进制优化】[USACO1.5] 八皇后 Checker Challenge C\C++\Java\Python3

P1219 [USACO1.5] 八皇后 Checker Challenge [USACO1.5] 八皇后 Checker Challenge 题目描述 一个如下的 6 6 6 \times 6 66 的跳棋棋盘&#xff0c;有六个棋子被放置在棋盘上&#xff0c;使得每行、每列有且只有一个&#xff0c;每条对角线&#xff08;包括两条主对角线的…

【Linux-IMX6ULL-阻塞与非阻塞】

目录 1 阻塞与非阻塞2 实现阻塞式访问的方法2.1 等待队列2.1.1 等待队列头2.1.2 等待队列项2.1.3 将队列项添加/移除等待队列头2.1.4 等待唤醒 2.2 轮询2.2.1 select()函数2.2.2 poll()函数2.2.3 epoll()函数2.2.4 总结 3 驱动里面的poll()函数4 等待队列实验4.1 未进行阻塞式访…

推荐5款好用的将pdf翻译成中文的工具。

像word&#xff0c;PPT,Excel等这些文档如果要翻译的话&#xff0c;即使没有合适的工具也可以复制粘贴内容。可PDF有的时候是不可以编辑的&#xff0c;很难用这种方法实现翻译。但是这5款翻译工具就可以做到直接将PDF文件进行翻译。 1、365pdf在线翻译 直达&#xff1a;https:…

Statistics 0 plan cost 1 temp tablespace 历史占用情况dba_hist_active_sess_history

T表的Statistics 为0 导致执行计划中显示T 后面行数是1&#xff0c; 1 hash join 21K的 正常情况hash join的后是1 不是11k&#xff0c;由于1导致最后40亿的nest loop执行了4小时。 gather Statistics 自动修改执行计划后1分钟 ---- 查看过去TEMP使用率 select a.SAMPLE_TIME,…

论文阅读:基于生物神经元的模拟游戏世界感知与学习

论文内容概述 AI要90分钟学会的游戏&#xff0c;人脑细胞竟在5分钟搞定了。Cell在2022年的研究中&#xff0c;使用80万体外神经元细胞(DishBrain)竟然学会玩70年代经典街机游戏Pong&#xff01; 论文链接&#xff1a;In vitro neurons learn and exhibit sentience when emb…