云解决方案 / cloudz
Requires
- aws/aws-sdk-php: ^3.269
- phpseclib/phpseclib: ^3.0
This package is auto-updated.
Last update: 2024-09-04 22:10:58 UTC
README
欢迎使用 CloudZ 库
CloudZ 是一个旨在简化与云服务交互的通用且直观的库。
CloudZ 策略
- FTP
- SFTP
- AWS S3
安装说明
CloudZ 库可在 Composer 管理的包中使用,要使用它,请运行以下命令
composer require somasolucoes/cloudz
PHP 中 CloudZ 库的初始化指南
初始配置
在开始使用 CloudZ 库之前,需要创建 JSON 文件以提供不同云服务的配置信息。请按照以下步骤操作
- 在项目根目录下创建一个名为
.cloudz
的文件夹。 - 在
.cloudz
文件夹中,为打算使用的每个云服务创建单独的 JSON 文件,按照以下命名规范ftp.json
aws-s3.json
FTP/SFTP 配置
在 .cloudz
文件夹中创建一个 ftp.json
文件,包含登录 FTP 或 SFTP 账户所需的信息。使用以下 JSON 格式
{ "FTPAccount": { "code": 1, "host": "192.168.0.0", "port": 21/22, "user": "admin", "password": "123", "isPassive": "S/N", "dirWork": "/example", "urlAcess": "http://example", "useSSH": "S/N" } }
AWS S3 配置
在 .cloudz
文件夹中创建一个 aws-s3.json
文件,包含登录 Amazon S3 账户所需的信息。使用以下 JSON 格式
{ "AWSS3Account": { "code": 1, "AWSKey": "B54CAB3F16A6CB378AEE5E1132B225F2", "AWSSecretKey": "5918933c23ef6c8ee8e3a96807654b3d", "AWSRegion": "us-east-1", "AWSType": "S3", "bucketName": "imagens/vídeos" } }
为了支持向多个账户上传文件,您可以在 JSON 文件中创建账户列表。以下是一些示例
FTP/SFTP 多账户配置
在 .cloudz
文件夹中创建一个 ftp.json
文件,并使用 JSON 数组配置多个账户
{ "FTPAccount": [ { "code": 1, "host": "192.168.0.0", ... }, { "code": 2, "host": "192.168.0.1", ... } ] }
AWS S3 多账户配置
在 .cloudz
文件夹中创建一个 aws-s3.json
文件,并使用 JSON 数组配置多个账户
{ "AWSS3Account": [ { "code": 1, "AWSKey": "B54CAB3F16A6CB378AEE5E1132B225F2", ... },{ "code": 2, "AWSKey": "B54CAB3F16A6CB378AEE5E1132B225F2", ... }] }
开始使用
配置完成后,要开始使用 CloudZ,需要实例化 CloudService 类。它需要两个参数。
- 您要连接的云服务类型;
- 您要访问的云服务账户的引用代码(此代码将在
.cloudz
目录中的一个 JSON 文件中标识配置的账户)。
$cloudServiceType = 'tipo_servico'; $cloudServiceAccountCode = 1; $cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);
以下是可用的服务类型列表
- 'FTP'
- 'AWS-S3'
示例
$cloudServiceType = 'FTP'; $cloudServiceAccountCode = 1; $cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);
也可以使用库提供的常量来指定服务类型。以下是服务类型常量的列表
- FTP_ACCOUNT
- AWS_S3_ACCOUNT
示例
$cloudServiceType = CloudServiceTypes::FTP_ACCOUNT; $cloudServiceAccountCode = 1; $cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);
提供这些参数后,您就可以开始使用库,并使用单一结构与不同的云服务进行交互。
配置
要添加配置,请使用以下命令
$cloudServiceType = 'tipo_servico'; $cloudServiceAccountCode = 1; $cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode); $cloudService->settings->add('key example', value example);
CloudService 类允许一些可选配置
- canEncryptName: 允许在发送文件时加密文件名(布尔值 true/false);
- canDeleteAfterUpload: 允许在本地上传后删除保存的文件(布尔值 true/false);
- path: 允许在云中创建或访问特定目录(字符串值)。
如果您想按照某种模式保持云中的组织结构,CloudZ 库提供了目录“工具”。这个工具提供了一种关注于项目解决方案的标准化模式,可以通过传递三个字符串参数(根目录、解决方案名称和模块名称)来使用。对于外部项目集成,目录工具只需要两个参数(根目录和集成名称)。这个工具可以通过静态方法访问,这有助于在项目中使用。
示例
$mountSolutionPath = CloudServicePathUtility::mountSolutionPath('root', 'solutionName', 'module'); //Resultado de CloudServicePathUtility::mountSolutionPath: 'root/solucoes/solutionName/module' $mountIntegrationPath = CloudServicePathUtility::mountIntegrationPath('root', 'integrationName'); //Resultado de CloudServicePathUtility::mountIntegrationPath: 'root/integracoes/integrationName' $cloudServiceType = 'tipo_servico'; $cloudServiceAccountCode = 1; $cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode); $cloudService->settings->add('path', $mountSolutionPath);
使用此功能,您可以保持不同云服务中的结构化组织,使文件和项目的定位更加容易。
文件准备
在进行上传或删除等操作之前,需要准备要发送的文件。为此,需要实例化CloudServiceFile类,将所需文件的本地路径作为参数传递。
$filePath = 'C:\Documents\example.txt' $file = new CloudServiceFile($filePath);
上传
要执行上传操作,只需使用CloudService实例的"upload"方法,将之前由CloudServiceFile类准备的文件作为参数传递。
$cloudServiceType = 'tipo_servico'; $cloudServiceAccountCode = 1; $cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode); $filePath = 'C:\Documents\example.txt' $file = new CloudServiceFile($filePath); $cloudService->upload($file);
使用upload方法时,库返回一个包含对用户有用的信息的响应对象。如果成功,将返回代码200,并附带一个允许访问已发送文件的URL。如果发生错误,将返回代码400,并附带解释错误原因的消息。
删除
要执行删除操作,只需使用CloudService实例的"delete"方法,将之前由CloudServiceFile类准备的文件作为参数传递。
$cloudServiceType = 'tipo_servico'; $cloudServiceAccountCode = 1; $cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode); $filePath = 'C:\Documents\example.txt' $file = new CloudServiceFile($filePath); $cloudService->delete($file);
使用delete方法时,库返回一个包含对用户有用的信息的响应对象。如果成功,将返回代码200,并附带成功消息。如果发生错误,将返回代码400,并附带解释错误原因的消息。