报表控件FastReport VCL 中的新 S3 传输 (Amazon)

在本文中,我们将探讨新的 S3 传输。从功能上来说,S3 与大多数人习惯使用的有很大不同,因此在本文的开头,我们将详细介绍它的主要功能。

FastReport .NET 是适用于.NET Core 3,ASP.NET,MVC和Windows窗体的全功能报告库。使用FastReport .NET,您可以创建独立于应用程序的.NET报告。

    FastReport .net下载(qun:585577353)icon-default.png?t=N7T8https://www.evget.com/product/1861/download

它是什么?

S3 不是像 Dropbox、Google Drive、Mega 等那样的文件存储。S3是对象存储。首先,我们需要了解这两个概念之间的区别。

文件存储具有通常的分层(树)结构。即存储其他目录和文件的熟悉的目录(文件夹)。

对象存储相对较新(最古老的现在大约有 20 年历史)。它们的实现略有不同,因此大多数功能都是通用的,但有些功能仅适用于 S3。

所有对象存储都是“扁平的”,这意味着它们没有层次结构,尽管它们可以“模仿”它。

开始使用 S3 时您将遇到的第一个实体是 Bucket。最接近的类比是许多编程语言中的“Map”,其中通过键请求数据。一个桶只能存放自己的文件,不能存放其他桶的文件。

关于bucket

Bucket

Key

Data

video.mp4

Data

text_file.txt

Data

code.pas

Data

使用该密钥,您可以获得与其对应的元数据,并根据需要自行解释。更有趣的是在这样的系统中模仿分层文件夹结构。

Bucket

Key

Data

video.mp4

Data

folder1\text_file.txt

Data

folder1\video.mp4

Data

folder1\folder1_1\video.mp4

Data

folder2\text_file.txt

Data

folder1\

Empty

folder1\folder1_1\

Empty

folder2\

Empty

某些“文件夹”与文件是相同的对象。它们只是为了视觉清晰度而采用不同的颜色。然而,它们有一个显着特征——键末尾有一个斜杠 (\)。通常,这些“文件夹”不包含任何数据(尽管它们可以)。

要查看“文件夹”folder1 的内容,我们需要按键前缀“folder1\”进行过滤。但更有趣的是删除“文件夹”。如果我们尝试在 Web GUI 中删除“文件夹”folder1,某些服务会允许这样做,但其他服务会向我们显示错误“无法删除非空文件夹”。

如果我们通过 API 删除带有键“folder1\”的单个记录,大多数 GUI 将停止渲染该特定“文件夹”。我们也将无法访问它,但实际上,该“文件夹”内的文件仍然存在。一旦我们再次创建一个名为folder1的“文件夹”,它就已经包含了被遗忘的文件。该密钥几乎没有限制,例如,它可以是“”之类的内容。这些将是名称为空的“文件夹”。

为什么对象存储比文件存储更好?

1. 对象存储要便宜得多。每个对象不绑定到特定设备,因此对象存储可以轻松扩展到所需的容量。您可以轻松租用 PB(约 1,000,000 GB)的对象存储。

2. 对象存储的搜索速度非常快。但自然地,对象存储最适合用于非结构化(非树)数据。

新的认证系统

之前的所有传输均使用 OAuth 2 协议。理论上,S3 也可以与 OAuth 2 配合使用,但它的 API 中有内置的身份验证系统。OAuth 2 使用客户端 ID 和秘密 ID 获取存在一定时间并且可以签署任何请求的令牌。

S3 的内部身份验证使用相同的 Client ID 和 Secret ID,基于大约 30 个变量(包括令牌创建时间、所需操作等),使用 SHA256HMAC 为每个操作生成新的一次性令牌。服务器仅验证令牌的正确生成,如果服务器接收到的令牌与服务器本身生成的令牌匹配,则执行操作。此后,该令牌将无法再使用。

AWS S3

尽管该传输被命名为“TfrxS3IOTransport”,明确引用了AWS S3(Amazon Simple Storage Service),但它的API已被许多对象存储系统(可以宽松地称为类S3)复制,因此该传输允许您工作不仅有亚马逊的服务。

向应用程序及其配置添加传输

首先,您需要从“FastReport VCL Internet Transports”选项卡添加适当的组件。

向表单添加组件

您可以使用组件上的上下文菜单。它将直接从开发环境建立连接。单击“编辑连接”子菜单。

调用传输上下文菜单

S3 连接对话框

当您需要使用传输打开或保存到文件时,将可以使用以下标准授权对话框(如果之前没有授权)。

标准授权对话框

让我们看看这个表单的所有独特字段:

服务器 URL — API 中使用的 URL。要找到 URL,您需要阅读文档;对于 AWS S3,默认情况下应为“s3.amazonaws.com”。

客户端 ID — 用于授权的公钥(通常称为访问密钥)。

秘密 ID — 用于授权的秘密密钥(通常称为秘密访问密钥)。

区域- 您需要阅读文档以了解可能的区域值。有时,会有不寻常的要求:例如,在AWS S3中,您只能请求具有“us-east-1”区域的存储桶列表。

Bucket——为了不用每次都手动选择Bucket,可以在此字段指定;有时桶具有特定区域的特征。

存储桶样式— 指定存储桶有 2 种类型:路径样式 (aws.s3.com/bucket )和虚拟托管样式 ( bucket.aws.s3.com。“路径样式”被认为已过时,因为通过特定的 DNS,可以向不同的存储桶发出多个请求,这可能会产生额外的负载。有些服务支持两种类型,有些只支持一种,有些可以针对不同的情况进行配置。 您可以在以下链接中了解这一点。

如果连接成功,您将看到标准的FastReport VCL文件浏览器(下面的屏幕截图显示了存储桶内的文件列表)。

标准文件浏览器FastReport VCL

这样就成功完成了连接设置。现在您知道如何在 FastReport VCL 中连接到 S3。

只需要注意我们实施的最后细微差别即可。我们团队还没有实现创建和删除桶。到目前为止,存储桶在视觉上与文件夹(在我们的第一个 GUI 版本中)没有什么不同,因为它风险太大。此外,删除文件夹及其内容尚未实现。此外,缺少分段上传大文件的功能(建议大于 100 MB 的文件)。

这种传输有许多配置细节和细微差别,但在某些情况下它可以是文件存储的替代方案。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构--二叉搜索树的实现

目录 1.二叉搜索树的概念 2.二叉搜索树的操作 二叉搜索树的插入 中序遍历(常用于排序) 二叉搜索树的查找 二叉搜索树的删除 完整二叉树代码: 二叉搜索树的应用 key/value搜索模型整体代码 1.二叉搜索树的概念 二叉搜索树又称二叉排序树,它或者是一…

亚信安慧AntDB数据并行加载工具的实现(一)

1.概述 数据加载速度是评判数据库性能的重要指标,能否提高数据加载速度,对文件数据进行并行解析,直接影响数据库运维管理效率。基于此,AntDB分布式数据库提供了两种数据加载方式: 一是类似于PostgreSQL的Copy命令&am…

ES6之解构赋值详解

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

Nacos注册

一、简介 Nacos是阿里云开源的一个服务发现、配置管理和服务鉴权平台,它提供了一种更简单、更便捷、更开放的方式来管理服务,帮助开发者快速实现服务的发现、配置的管理、服务的鉴权等功能。Nacos可以帮助开发者轻松管理微服务应用中的服务提供者、服务…

《整机柜服务器通用规范》由OCTC正式发布!浪潮信息牵头编制

近日,中国电子工业标准化技术协会开放计算标准工作委员会(OCTC)正式批准发布了《整机柜服务器通用规范》,该标准由浪潮信息牵头,中国工商银行、中国质量认证中心、英特尔、中国计量科学研究院等十余家单位联合编制&…

Github 2023-12-30 开源项目日报 Top10

根据Github Trendings的统计,今日(2023-12-30统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目4JavaScript项目2C项目1Python项目1Java项目1HTML项目1Dart项目1非开发语言项目1 令人惊叹的 …

一起玩儿物联网人工智能小车(ESP32)——13. 用ESP32的GPIO控制智能小车运动起来(一)

摘要:本文更深入的讲述了GPIO的相关知识,并完成了导线连接工作,为下一步的软件开发做好了准备。 通用输入输出端口(GPIO:General Purpose Input/Output Port),在前面已经有了初步的介绍&#xf…

代码随想录-刷题第四十二天

0-1背包理论基础 0-1背包问题介绍 0-1背包问题:有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 0-1背包问题可以使用回溯法进…

mongoose中http server服务器解决“Access-Control-Allow-Origin mongoose”跨域问题

问题 使用mongoose做http服务器,自己构造的浏览器端jquery在访问server时,会遇到: Access to XMLHttpRequest at http://127.0.0.1:8000/ from origin null has been blocked by CORS policy: No Access-Control-Allow-Origin header is pr…

Android Camera

1. 相关的API Android有三套关于摄像头的API(库),分别是Camera、Camera2和CameraX,其中Camera已废弃,在Android5.0以后推荐使用Camera2和CameraX,Camera2推出是用来替换Camera的,它拥有丰富的API可以为复杂的用例提供…

ArcGIS批量计算shp面积并导出shp数据总面积(建模法)

在处理shp数据时, 又是我们需要知道许多个shp字段的批量计算,例如计算shp的总面积、面积平均值等,但是单个查看shp文件的属性进行汇总过于繁琐,因此可以借助建模批处理来计算。 首先准备数据:一个含有多个shp的文件夹。…

树莓派 ubuntu20.04下 python调讯飞的语音API,语音识别和语音合成

目录 1.环境搭建2.去讯飞官网申请密钥3.语音识别(sst)4.语音合成(tts)5.USB声卡可能报错 1.环境搭建 #环境说明:(尽量在ubuntu下使用, 本次代码均在该环境下实现) sudo apt-get install sox # 安装语音播放软件 pip …

【零基础入门VUE】VueJS - 模板

✍面向读者:所有人 ✍所属专栏:零基础入门VUE专栏https://blog.csdn.net/arthas777/category_12537076.html 我们在前面的章节中学习了如何在屏幕上以文本内容的形式输出。在本章中,我们将学习如何在屏幕上以 HTML 模板的形式获取输出。 为了…

使用element中el-cascader级联选择器动态懒加载以及回显 (单选)

<template><!-- 新增||修改弹框 --><el-dialog :close-on-click-modal"false" :close-on-press-escape"false" :title"title" :visible.sync"open"width"800px" append-to-body><el-form ref"for…

2023年高级软考系统架构师考题参考

对于一些有实践经验的同学来说&#xff0c;感觉不难&#xff0c;但是落笔到纸面上&#xff0c;就差强人意了&#xff0c;平时这方面要多练习&#xff0c;所想所思要落到纸面上&#xff0c;或者表达清晰让别人听懂&#xff0c;不仅是工作中的一个基本素质&#xff0c;也是个非常…

跟小德学C++之配置文件(形式)

嗨&#xff0c;大家好&#xff0c;我是出生在达纳苏斯的一名德鲁伊&#xff0c;我是要立志成为海贼王&#xff0c;啊不&#xff0c;是立志成为科学家的德鲁伊。最近&#xff0c;我发现我们所处的世界是一个虚拟的世界&#xff0c;并由此开始&#xff0c;我展开了对我们这个世界…

C/C++转WebAssembly及微信小程序调用

上一篇文章讲了C/C如何转WebAssembly&#xff0c;并测试了在Web端调用。本篇内容和上篇一样&#xff0c;介绍C/C包转的.wasm包如何在小程序中调用。 说明 本篇是在上一篇步骤1-4的基础上&#xff0c;再做修改&#xff0c;供微信小程序端调用的方法和步骤。 本篇操作手册可以…

再见2023,你好2024

再见2023&#xff0c;你好2024 生活1月 悲伤与治愈2~4月 运动与偏爱5月 体验与美食6月 婚礼与热爱7~8月 就医与别离9~11月 陪伴与暖房12月 体验&新生 运动追剧读书总结 生活 生活是一个修罗场&#xff0c;来世间一场&#xff0c;要经历丰腴有趣的人生。去体验各种滋味&…

线性代数——(期末突击)行列式(上)-行列式计算、行列式的性质

目录 行列式 行列式计算 逆序数 行列式的性质 转置 两行&#xff08;列&#xff09;互换 两行&#xff08;列&#xff09;对应相等 提公因子 两行&#xff08;列&#xff09;对应成比例 某行&#xff08;列&#xff09;为零 行列式分裂 行列式变换及三角行列式 行…

MySQL 数值函数,字符串函数与多表查询

MySQL像其他语言一样,也提供了很多库函数,分为单行函数和分组函数(聚合函数),我们这里先简易介绍一些函数,熟悉就行,知道怎么使用即可. 数值函数 三角函数 指数与对数函数 进制间的转换函数 字符串函数 注:LPAD函数是右对齐,RPAD函数是左对齐 多表查询 注:如果为表起了别名,就…