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

news2025/3/1 12:01:08

在本文中,我们将探讨新的 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 的文件)。

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

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

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

相关文章

java maven项目添加oracle jdbc的依赖

一般添加依赖是直接在pom.xml中添加配置即可,Maven会自动获取对应的jar包,但是oracle驱动依赖添加后会显示红色,代表找不到依赖项,是因为Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中…

LinkSLA管家式运维:为企业打造定制化 IT 支持体系

引言 在数字化转型的浪潮中,企业信息系统繁多,涉及人员复杂,且企业经营管理活动对IT系统的依赖程度越来越高。传统的运维模式已经不能满足企业对运维工作全面性、灵活性、稳定性和安全性的需求。管家式运维作为一种新型服务模式,…

CUDA安装与Tensorflow1-gpu环境搭建(windows版)

一、前提说明 1.1 Tensorflow-gpu环境搭建基本步骤 (1)明确环境搭建资源需求与下载 (2)安装CUDA与cuDNN (3)用Anaconda搭建tensorflow-gpu环境 (4)tensorflow-gpu环境测试 1.2 个人说明 由于科研需要复现机器学习、深度学习某些经典实验,这…

商品销售数据爬取分析可视化系统 爬虫+机器学习 淘宝销售数据 预测算法模型 大屏 大数据毕业设计(附源码)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

网络层解读

基本介绍 概述 当两台主机之间的距离较远(如相隔几十或几百公里,甚至几千公里)时,就需要另一种结构的网络,即广域网。广域网尚无严格的定义。通常是指覆盖范围很广(远超过一个城市的范围)的长距离的单个网络。它由一些结点交换机以及连接这些…

numpy数组04-数组的轴和读取数据

一、数组的轴 在numpy中数组的轴可以理解为方向,使用0,1,2...数字表示。 对于一个一维数组,只有一个0轴,对于2维数组(如shape(2,2)),有0轴和1轴…

Windows搭建RTSP视频流服务(EasyDarWin服务器版)

文章目录 引言1、安装FFmpeg2、安装EasyDarWin3、实现本地\虚拟摄像头推流服务4、使用VLC或PotPlayer可视化播放器播放视频5、RTSP / RTMP系列文章 引言 RTSP和RTMP视频流的区别 RTSP (Real-Time Streaming Protocol)实时流媒体协议。 RTSP定义流格式&am…

idea利用JRebel插件,无需重启,实现Spring Boot项目热重载,节省开发时间和精力!

插件介绍 官方介绍 翻译过来的意思是: JRebel 是一款提高开发效率的工具,允许开发者立即重新加载代码更改。它跳过了在Java开发中常见的重新构建、重启和重新部署循环。JRebel 能够让开发者在相同的时间内完成更多工作,并且在编码时能够保持…

付费进群系统源码带定位完整独立版(12月30日)再次修复首发

搭建教程 nginx1.2 php5.6–7.2均可 最好是7.2 第一步上传文件程序到网站根目录解压 第二步导入数据库(shujuku.sql) 第三步修改/config/database.php里面的数据库地址 第四步修改/config/extra/ip.php里面的域名 第四步设置伪静态thinkphp 总后台账号&…

unity控制摄像机几种视角实现方式

目录 1、按下鼠标右键可以实现摄像机上下左右旋转 2、自由视角 3、摄像头跟随视角 4、跟随自由视角 5、第一人称跟随视角 python学习汇总连接: 1、按下鼠标右键可以实现摄像机上下左右旋转 这段代码定义了一个名为CameraRotate的脚本,用于控制摄像…

Unity坦克大战开发全流程——结束场景——通关界面

结束场景——通关界面 就照着这样来拼 写代码 hideme不要忘了 修改上一节课中的代码

Java项目:103SSM酒店管理系统

博主主页:Java旅途 简介:分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 酒店管理系统基于SpringSpringMVCMybatis开发,功能简单,可用于毕设或者课程设计。 管理员功能如下: 房间管理住客入住…

图像去雾/图像去雨(matlab/python)

图像去雾和图像去雨是计算机视觉领域的两个重要问题,旨在改善被大气条件或降雨影响而模糊或噪声化的图像质量。这两个技术在很多实际应用中具有广泛的价值,包括无人驾驶、安防监控、航空航天等领域。下面将分点介绍图像去雾和图像去雨的相关内容。 1. 图…

微服务(10)

目录 46.k8s中镜像的下载策略是什么? 47.image的状态有哪些? 48.如何控制滚动更新过程? 49.DaemonSet资源对象的特性? 50.说说你对Job这种资源对象的了解? 46.k8s中镜像的下载策略是什么? 可通过命令k…

IIS服务器发布PHP网站

IIS服务器,相信开发者都不会陌生,它的英文全称是Internet Information Services,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务,常用于Windows系统的Web项目部署,本篇以PHP项目为例,讲解如…

循环生成对抗网络(CycleGAN)

一、说明 循环生成对抗网络(CycleGAN)是一种训练深度卷积神经网络以执行图像到图像翻译任务的方法。网络使用不成对的数据集学习输入和输出图像之间的映射。 二、基本介绍 CycleGAN 是图像到图像的翻译模型,就像Pix2Pix一样。Pix2Pix模型面临…

kotlin快速入门1

在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。目前主流AndroidApp开发已经全部切换成此语言,因此对于Android开发而言,掌握Kotlin已经变成必要事情。 Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言&#xff…

超声波防碰撞电路原理图

如图所示为超声波防碰撞电路,电路采用LM1812并由时基电路Ⅱ来控制LM1812的发送与接收(LM1812,即发送又接收)。控制距离可用Skfl的电位器来调节,一般可控制2-3m。时基电路1组成单稳态电路,当达到报警距离时,…

python安装MongoDB与运算符优先级

python安装MongoDB MongoDB 是目前最流行的 NoSQL 数据库之一,使用的数据类型 BSON(类似 JSON)。 PyMongo Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接。 pip 安装 pip 是一个通用的 Python 包…

vue-springboot基于Javaweb的二手儿童绘本网上商城交易系统设计与实现

本二手儿童绘本交易系统是为了提高用户查阅信息的效率和管理人员管理信息的工作效率,可以快速存储大量数据,还有信息检索功能,这大大的满足了用户、商家和管理员这三者的需求。操作简单易懂,合理分析各个模块的功能,尽…