群控系统服务端开发模式-应用开发-腾讯云上传工厂及七牛云上传工厂开发

记住业务流程图,要不然不清楚自己封装的是什么东西。

一、腾讯云工厂开发

切记在根目录下要安装腾讯云OSS插件,具体代码如下:

复制代码
composer require qcloud/cos-sdk-v5

在根目录下extend文件夹下Upload文件夹下channel文件夹中,我们修改TencentUpload业务控制器。具体代码如下:

复制代码
<?php
/**
 * 腾讯云上传工厂
 * User: 龙哥 三年风水
 * Date: 2024/11/2/0002
 * Time: 18:18
 */
namespace Upload\channel;
use Qcloud\Cos\Client;
use Upload\UploadHandle;
use Error\BaseError;
class TencentUpload extends UploadHandle
{
    protected $accessKey = '';//access_key
    protected $secretKey = '';//secret_key
    protected $bucket = '';//包
    protected $name = '';//访问地址
    protected $domainName = '';//访问地址

    public function __construct($param)
    {
        $this->accessKey = $param['access_key'];
        $this->secretKey = $param['secret_key'];
        $this->bucket = $param['bucket'];
        $this->name = $param['name'];
        $this->domainName = $param['domain_name'];
    }

    /**
     * 上传操作
     * @ param $object 加密后的文件
     * @ param $filePath 临时存放的文件路径
     * @ return mixed
     */
    public function uploadFile($object, $filePath)
    {
        $ossClient = new Client(array(
            'region' => 'ap-nanjing',
            'schema' => 'http', //协议头部,默认为http
            'credentials' => array(
                'secretId' => $this->accessKey,
                'secretKey' => $this->secretKey
            )
        ));
        try {
            $file = fopen($filePath,'rb');
            if ($file) {
                $res = $ossClient->Upload($this->bucket, $object,$file);
                if($res==true)return empty($this->domainName) ? $this->name.'/'.$res['Key'] : $this->domainName.'/'.$res['Key'];
            }
        } catch (\Exception $e) {
            throw new BaseError($e->getMessage(),50000,200);
        }
    }

    /**
     * 删除操作
     * @ param $object 具体的文件地址
     * @ return mixed
     */
    public function deleteFile($object)
    {
        // TODO: Implement deleteFile() method.
    }
}

二、七牛云工厂开发

切记在根目录下要安装七牛云OSS插件,具体代码如下:

复制代码
composer require qiniu/php-sdk

在根目录下extend文件夹下Upload文件夹下channel文件夹中,我们修改QiniuyunUpload业务控制器。具体代码如下:

复制代码
<?php
/**
 * 七牛云上传工厂
 * User: 龙哥 三年风水
 * Date: 2024/11/2/0002
 * Time: 18:19
 */
namespace Upload\channel;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
use Upload\UploadHandle;
use Error\BaseError;
class QiniuyunUpload extends UploadHandle
{
    protected $accessKey = '';//access_key
    protected $secretKey = '';//secret_key
    protected $bucket = '';//包
    protected $name = '';//访问地址
    protected $domainName = '';//访问地址

    public function __construct($param)
    {
        $this->accessKey = $param['access_key'];
        $this->secretKey = $param['secret_key'];
        $this->bucket = $param['bucket'];
        $this->name = $param['name'];
        $this->domainName = $param['domain_name'];
    }

    /**
     * 上传操作
     * @ param $object 加密后的文件
     * @ param $filePath 临时存放的文件路径
     * @ return mixed
     */
    public function uploadFile($object, $filePath)
    {
        $auth = new Auth($this->accessKey,$this->secretKey);
        $token = $auth->uploadToken( $this->bucket);
        $uploadMgr = new UploadManager();
        list($info, $error) = $uploadMgr->putFile($token, $object, $filePath);
        if(!empty($error) && empty($info['key']))throw new BaseError($error,50000,200);
        return $this->name.'/'.$info['key'];
    }

    /**
     * 删除操作
     * @ param $object 具体的文件地址
     * @ return mixed
     */
    public function deleteFile($object)
    {
        // TODO: Implement deleteFile() method.
    }
}

三、提前说明

明天开发上传接口及调试,如果有时间的情况下,就将删除补充起来。

相关推荐
我就是不信11 分钟前
集群高并发环境下如何保证分布式唯一全局ID生成?
分布式
黄俊懿21 小时前
【架构师从入门到进阶】第六章:服务集群优化——第八节:线程数公式
java·服务器·数据库·分布式·性能优化·架构·系统架构
IM架构师1 天前
# 一次老旧PHPCMS网站入侵排查:从SQL注入到PHP后门,以及IP白名单止血
sql·tcp/ip·php
大菠萝爱上小西瓜1 天前
基于 Spark + Iceberg 湖仓一体的 Netflix 流媒体用户行为全链路数仓与 ALS 智能推荐决策系统(含穿透下钻大屏)
大数据·分布式·spark
码途行者1 天前
处理超时未支付订单:两套轻量化方案,附 PHP 极简实现
开发语言·redis·php
vx_Biye_Design1 天前
PHP中医养生馆预约系统60841-计算机课程设计、毕业设计
vue.js·spring boot·后端·mysql·php·课程设计·express
吴建旭 智宅焕1 天前
智能家居售后服务体系的架构设计:分布式售后风险的集中式兜底方案
分布式·智能家居
.Bryce.1 天前
你了解 Blackboard(黑板系统)吗?听说过基于黑板系统实现的智能体吗?
java·网络·gpt·php·agent·codex·黑板系统
lisanmengmeng1 天前
Ganglia分布式集群监控系统安装手册
分布式
yu_zhidun1 天前
企业电脑监控软件怎么选:别只看功能清单,先看这 6 个底层能力
开发语言·电脑·php·域智盾系统