云解决方案 / 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.jsonaws-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,并附带解释错误原因的消息。