对象存储开发
位置
插件放在 public/plugins/oss/ 目录下
目录结构
public/plugins/oss/tencentcloud_oss
|--- config(自定义配置)
|--- config.php(自定义配置文件)
|--- TencentcloudOss.php(对象存储主文件)
|--- config.php(配置文件,系统后台可配置)开发流程
本企业版当前内置 local_oss。以下沿用官方腾讯云对象存储示例说明自定义对象存储驱动的写法:
创建腾讯云对象存储目录 public/plugins/oss/tencentcloud_oss/
①目录名以小写字母+下划线形式,必须以字母开头,如tencentcloud_oss;
创建入口文件:TencentcloudOss.php
①命名空间namespace oss\tencentcloud_oss(控制器下命名空间对应相应目录即可,其它同理);
②以目录名大驼峰 + .php,创建在对象存储接口根目录下,如:
tencentcloud_oss\TencentcloudOss.php③文件中需要定义info属性,示例:
// 插件基础信息
public $info = array(
'name' => 'TencentcloudOss',//Demo插件英文名,改成你的插件英文就行了
'title' => '腾讯云对象存储',
'description' => '腾讯云对象存储',
'status' => 1,
'author' => '智简魔方',
'version' => '1.0.0',
'module' => 'oss',
'help_url' => 'https://cloud.tencent.com/product/cos'
);④必须实现install()安装以及uninstall()卸载方法
⑤必须实现'目录名大驼峰+Link'方法,用于检测对象存储是否联通,如:
public function TencentcloudOssLink()⑥必须实现'目录名大驼峰+Data'方法,用于判断对象存储是否有数据,如:
public function TencentcloudOssData()此方法无参数。
⑥必须实现'目录名大驼峰+Upload'方法,用于文件上传,如:
方法签名:
public function TencentcloudOssUpload($param)参数 param 为数组,以下使用 JSON 展示:
{"file_path":"/test/","file_name":"test.png"}参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file_path | string | — | 文件保存路径 |
file_name | string | — | 文件名 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
data.url | string | 文件访问地址 |
⑦必须实现'目录名大驼峰+Download'方法,参数param(此参数为数组,示例json方便显示):
{"file_path":"/test/","file_name":"test.png","action":"preview"}参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file_path | string | — | 文件保存路径 |
file_name | string | — | 文件名 |
action | string | — | 动作,preview预览,download下载 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
data.url | string | 文件下载地址 |
确定是否需要后台配置文件,如果需要,在对象存储根目录下加上config.php,示例
<?php
return [
'module_name' => [// 在后台插件配置表单中的键名 ,会是config[text]
'title' => '名称', // 表单的label标题
'type' => 'text', // 表单的类型:text,password,textarea,checkbox,radio,select等
'value' => '腾讯云对象存储', // 表单的默认值
'tip' => '友好的显示名称', //表单的帮助提示
],
'secret_id' => [ // 在后台插件配置表单中的键名 ,会是config[text]
'title' => 'Secret ID', // 表单的label标题
'type' => 'text', // 表单的类型:text,password,textarea,checkbox,radio,select等
'value' => '', // 表单的默认值
'tip' => 'Client ID', //表单的帮助提示
],
'secret_key' => [
'title' => 'Secret Key',
'type' => 'password',
'value' => '',
'tip' => 'Secret Key,保存后不应完整回显',
],
'bucket' => [
'title' => 'Bucket',
'type' => 'text',
'value' => '',
'tip' => '存储桶名称',
],
'region' => [
'title' => 'Region',
'type' => 'text',
'value' => '',
'tip' => 'Bucket 所在区域',
],
];到后台存储对象接口管理界面刷新就会看到新添加的存储对象接口,安装、配置即可使用
示例
参考腾讯云对象存储tencentcloud_oss