当前位置: 首页 > article >正文

群控系统服务端开发模式-应用开发-本地上传工厂及阿里云上传工厂开发

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

一、本地工厂开发

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

<?php
/**
 * 本地上传工厂
 * User: 龙哥 三年风水
 * Date: 2024/11/2/0002
 * Time: 18:16
 */
namespace Upload\channel;
use think\exception\ValidateException;
use think\facade\Filesystem;
use Upload\UploadHandle;
use Error\BaseError;
class LocalUpload extends UploadHandle
{

    /**
     * 上传操作
     * @ param $object 加密后的文件
     * @ param $filePath 临时存放的文件路径
     * @ return mixed
     */
    public function uploadFile($object, $filePath)
    {
        try{
            $savename = Filesystem::disk('public')->putFileAs( 'image', $filePath ,$object);
            return $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].'/storage/'.$savename;
        }catch (ValidateException $e){
            throw new BaseError($e->getMessage(),50000,200);
        }
    }

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

        一定要记得配置根目录下config文件夹中的filesystem.php,具体代码如下:

<?php
return [
    // 默认磁盘
    'default' => env('filesystem.driver', 'local'),
    // 磁盘列表
    'disks'   => [
        'local'  => [
            'type' => 'local',
            'root' => app()->getRuntimePath() . 'storage',
        ],
        'public' => [
            // 磁盘类型
            'type'       => 'local',
            // 磁盘路径
            'root'       => app()->getRootPath() . 'public/storage',
            // 磁盘路径对应的外部URL路径
            'url'        => '/storage',
            // 可见性
            'visibility' => 'public',
        ],
        // 更多的磁盘配置信息
    ],
];

二、阿里云工厂开发

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

composer require aliyuncs/oss-sdk-php

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

<?php
/**
 * 阿里云上传工厂
 * User: 龙哥 三年风水
 * Date: 2024/11/2/0002
 * Time: 18:17
 */
namespace Upload\channel;
use OSS\Core\OssException;
use OSS\OssClient;
use Upload\UploadHandle;
use Error\BaseError;
class AliyunUpload 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 OssClient($this->accessKey, $this->secretKey, $this->name);
        if(!$ossClient->doesBucketExist($this->bucket))$ossClient->createBucket($this->bucket);
        try{
            $result = $ossClient->uploadFile($this->bucket, $object, $filePath);
            if($result==true)return empty($this->domainName) ? $result['info']['url'] : $this->domainName.'/'.$object;
        }catch (OssException $e){
            throw new BaseError($e->getErrorMessage(),50000,200);
        }
    }

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

http://www.kler.cn/a/382532.html

相关文章:

  • [C++ 核心编程]笔记 4.4.1 全局函数做友元
  • 【RESTful】RESTful API:最佳实践指南
  • #渗透测试#SRC漏洞挖掘#XSS跨站脚本介绍02绕过
  • stack和queue --->容器适配器
  • 从零开始在本地服务器上安装OnlyOffice并进行跨地域协同编辑文件
  • 【ROS2】话题发布和订阅的频率控制
  • wps 运行宏 获取所有的表格
  • Flutter鸿蒙next 中的 setState 使用场景与最佳实践
  • 【Ag-Grid】 使用笔记 Vue3 + Vite(一)
  • Docker安装及简单使用
  • Vue3安装、创建到使用
  • vue:Transition
  • 剑指offer第六天
  • vue3+ant design vue与vue3+vant实现阿里云oss文件上传
  • 机器学习—矩阵乘法的规则
  • 高校实验室安全巡检系统设计与实现(源码+定制+开发)高校实验室巡检系统、实验室安全管理平台、实验室安全监控系统、智能实验室巡查系统、高校实验室风险管理
  • pandas习题 051:将字符串数据读取到 DataFrame
  • 信奥赛_NOIP/CSP——差分算法
  • 深度学习—Pandas标签库基础
  • kill-start系统进程的研究
  • 虚拟现实和增强现实技术,如何打造沉浸式体验?
  • cuda 环境搭建
  • 躺平成长-代码开发,利用kimi开发小程序(09)
  • 源码解析篇 | YOLO11:计算机视觉领域的新突破 !对比YOLOv8如何 ?
  • DDoS防护应急手段详解
  • string模拟实现构造+析构