分享一个接入第三方对象存储的代码,有阿里云、腾讯云、七云牛,都在附件模块上面修改

Fung 8月前 187


没做成插件,只在代码上面二次开发功能,做简单做了上传和删除文件功能,可能写得不好勿喷


补充:直接覆盖会有一点小问题,1、本地上传我有使用一个生成缩略图的函数,解决方法:方法一:注释Upload类第367-408行代码和第417行thumb去掉或给空值;方法二添加生成缩略图函数(createThumbImage),见文末。2、第三方删除上传记录使用封装的删除函数(deleteModel),解决方法:方法一:自行修改删除代码;方法二,添加删除函数,见文末


1、创建第三方存储数据表(或者直接写在配置上面都行)

DROP TABLE IF EXISTS `yzn_third_oss`;
CREATE TABLE `yzn_third_oss`  (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `key` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '上传驱动键',
  `value` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '上传驱动值',
  `accessKey` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '公钥',
  `secretKey` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '私钥',
  `bucket` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '空间',
  `endpoint` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '阿里云的EndPoint(地域节点)/腾讯云的存储桶地域',
  `status` tinyint(1) NOT NULL COMMENT '状态,0表示为设置,1已设置',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of yzn_third_oss
-- ----------------------------
INSERT INTO `yzn_third_oss` VALUES (1, 'aliyuncs', '阿里云存储', '', '', '', '', 0);
INSERT INTO `yzn_third_oss` VALUES (2, 'qiniu', '七云牛存储', '', '', '', '', 0);
INSERT INTO `yzn_third_oss` VALUES (3, 'tencent', '腾讯云存储', '', '', '', '', 0);


2、修改后台上传驱动(添加存储类型) 路径在:设置——配置管理——上传

注:如果下面跟我不一样需要修改代码和配置文件

3、访问图片前缀:(我写在app配置文件里面)

4、附件模块

controller目录

AliyuncsUpload.php——阿里云上传类
Attachments.php——附件类
QiniuUpload.php——七牛云上传类
TencentUpload.php——腾讯云上传类
ThirdOss.php——第三方设置类型(如果配置写在配置文件里面此类可不需要)
Upload.php——上传

Upload类

$this->uploadDriver //后台上传去掉类型
$this->domain   //第三方存储访问前缀


获取第三次存储配置,按实际情况修改


上传实例化

红框的变量可以修改为一样如$uploadClass,把$res = $uploadClass->upload($info);放到下面去


model目录

Attachment.php——附件model,处理图片返回

在附件列表删除记录也会删除存储空间的文件,按实际情况修改代码


附上三个存储SDK的composer
阿里云:composer require aliyuncs/oss-sdk-php
腾讯云:composer require qcloud/cos-sdk-v5
七牛云:composer require qiniu/php-sdk


-----------------------------------------------------------补充----------------------------------------------------------

生成缩略图函数(类在附近,放进extend/util下面)

/** 
* 生成缩略图 
* @param string $path 原图片路径 
* @param string $thumb_path 缩略图路径 
* @param int $percent 百分比 
*/
function createThumbImage($path = '', $thumb_path = '', $percent = 1){    
    $img = new \util\ImgCompress($path, $percent);    
    $img->compressImg($thumb_path);
}


删除函数

/** 
* 根据条件删除数据 
* @param string $model 模型 
* @param null $map 刪除條件
* @return bool 
* @throws \think\Exception 
* @throws \think\exception\PDOException 
*/
function deleteModel($model = '', $map = null){    
    $result = Db::name($model)->where(new Where($map))->delete();    
    if ($result > 0) {        
        return true;    
    } else {        
        return false;    
    }
}



最后于 8月前 被Fung编辑 ,原因:
上传的附件:
最新回复 (2)
  • admin 8月前
    0 2

    不错 做成插件更好   不过最好备注下comoser地址

  • Fung 8月前
    0 3
    附上三个存储SDK的composer
    阿里云:composer require aliyuncs/oss-sdk-php
    腾讯云:composer require qcloud/cos-sdk-v5
    七牛云:composer require qiniu/php-sdk
    • YznCMS交流社区
      4
        登录 注册 QQ登录
返回