自学内容网 自学内容网

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

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

一、本地工厂开发

        在根目录下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.
    }
}

原文地址:https://blog.csdn.net/m0_63603104/article/details/143464669

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!