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

2023-12-30 17:20

本文主要是介绍报表控件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 的文件)。

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

这篇关于报表控件FastReport VCL 中的新 S3 传输 (Amazon)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/553519

相关文章

多线程解析报表

假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都解析完之后,程序需要提示解析完成。 Way1 join import java.time.LocalTime;public class Main {public static void main(String[] args) thro

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

BIRT报表script

1.隔行高亮显示 1. 在布局(Layout)中,选择Table-Detail的行。如下图:   2. 然后选择Script,打开脚本窗口顶部的方法列表并选择onPrepare,如图所示。 var count=0;   3. 最后打开脚本窗口顶部的方法列表并选择 onCreate,如图所示: count++; if (count % 2 != 0) {   style.se

Birt报表开发实战

我就截图描述得了,没什么含金量,看图基本明白的。 1.开始 a.创建报表文件 b.数据源配置 c.配置数据集 2.网格报表 拖拉式操作,很方便 3.预览效果 其他报表的操作也基本不难,就不扯了! 2.级联参数 官方视频教程:http://demo.actuate.com/demos/cascade/cascade.html

BIRT--商业智能和报表工具,从零开始

1.简介 BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 JavaEE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。 2.下载 官网下载网址:http://download.ec

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件

fastreport打印trichedit分页问题的解决

用fastreport来打印richedit里面的内容。刚开始放一个frxrichview组件到报表上,然后在 var str: TMemoryStream; begin    begin      str:= TMemoryStream.Create;      CurrRichRecord.richedit.Lines.SaveToStream(str);      str.Posit