DT添加七牛云对象存储插件功能
2023-09-14 08:57:34 时间
七牛云对象存储 1.注意客户购买的空间的存储区域,区域不同对应的上传域名不同 destoon 七牛云上传文件 用下面源码替换include/ftp.class.php 文件代码
<?php defined('IN_DESTOON') or exit('Access Denied'); class dftp { var $connected = 0; var $ak; var $sk; var $bk; function __construct($ftphost, $ftpuser, $ftppass, $ftpport = 21, $root = '/', $pasv = 0, $ssl = 0) { $this->connected = 1; $this->ak = $ftpuser; $this->sk = $ftppass; $this->bk = $root; } function dftp($ftphost, $ftpuser, $ftppass, $ftpport = 21, $root = '/', $pasv = 0, $ssl = 0) { $this->__construct($ftphost, $ftpuser, $ftppass, $ftpport, $root, $pasv, $ssl); } function dftp_delete($file) { $key = $file; $entry = $this->bk.':'.$key; $encodedEntryURI = $this->dftp_encode($entry); $signingStr = "/delete/".$encodedEntryURI."\n"; $sign = hash_hmac('sha1', $signingStr, $this->sk, true); $encodedSign = $this->dftp_encode($sign); $accessToken = $this->ak.':'.$encodedSign; $headers = array(); $headers[] = 'Authorization: QBox '.$accessToken; $cur = curl_init('http://rs.qiniu.com/delete/'.$encodedEntryURI); curl_setopt($cur, CURLOPT_POST, 1); curl_setopt($cur, CURLOPT_POSTFIELDS, ''); curl_setopt($cur, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($cur, CURLOPT_HEADER, 0); curl_setopt($cur, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($cur, CURLOPT_RETURNTRANSFER, 1); curl_setopt($cur, CURLOPT_HTTPHEADER, $headers); $rec = curl_exec($cur); curl_close($cur); } function dftp_put($local, $remote = '') { global $DT_TIME; $remote or $remote = $local; $local = DT_ROOT.'/'.$local; $key = $remote; $P = array(); $P['scope'] = $this->bk.':'.$key; $P['deadline'] = $DT_TIME + 3600; $putPolicy = json_encode($P); $encodedPutPolicy = $this->dftp_encode($putPolicy); $sign = hash_hmac('sha1', $encodedPutPolicy, $this->sk, true); $encodedSign = $this->dftp_encode($sign); $uploadToken = $this->ak.':'.$encodedSign.':'.$encodedPutPolicy; $headers = array(); $headers[] = 'Expect: '; $par = array(); $par['key'] = $key; $par['token'] = $uploadToken; $par['file'] = '@'.$local; $cur = curl_init('http://upload.qiniu.com/'); curl_setopt($cur, CURLOPT_POST, 1); curl_setopt($cur, CURLOPT_POSTFIELDS, $par); curl_setopt($cur, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($cur, CURLOPT_HEADER, 0); curl_setopt($cur, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($cur, CURLOPT_RETURNTRANSFER, 1); curl_setopt($cur, CURLOPT_HTTPHEADER, $headers); $rec = curl_exec($cur); curl_close($cur); if(strpos($rec, 'key') !== false) { $arr = json_decode($rec, true); if($arr['key'] == $key) return true; } return false; } function dftp_chdir() { if(!function_exists('hash_hmac')) return false; if(!function_exists('curl_init')) return false; return true; } function dftp_encode($str) { return str_replace(array('+', '/'), array('-', '_'), base64_encode($str)); } } ?>
配置例如:
- FTP主机:upload.qiniu.com
- FTP帐号:AccessKey 例如:db2N1b4xpqtA7UltwE97feeetgssYNjHFf9k-ZFs
- FTP密码:SecretKey 例如:E_1yje34kU6Zq-EVsqgxducdfcdc6nZiLshMpL_O
- 远程存储目录:存储空间 bucket 名称 例如:zhimo-yuanzhumuban-cc
- 远程访问URL:绑定域名 例如:http://zhimo.yuanzhumuban.cc/
相关文章
- 华为云实战 之 对象存储的使用以及与腾讯云COS对比
- MySQL存储过程实现动态执行SQL
- 对象存储在什么地方(java编程思想)
- 云原生存储和云存储有什么区别?
- 【网址收藏】如何设置node.js存储路径:node缓存、数据目录
- Atitit 存储与数据库性能调优流程目录1. 数据库出现性能瓶颈,对外表现有几个方面:
- Atitit. 类与对象的存储实现
- Flutter进阶第10篇: 本地存储,封装本地存储类,实现最简单的状态管理
- java操作阿里云的对象存储OSS
- 初识弹性文件服务:可靠的共享文件存储
- java怎样将一组对象传入Oracle存储过程
- 个人存储不同类型的对象有一些想法的碰撞检测
- TreeSet排序,存储自己定义对象,自己定义比較器演示样例
- ceph rados 创建存储池 存储池对象查看
- [SSD核心技术:FTL 10] 固态存储垃圾回收GC(Garbage Collection)机制 | GC 分类 | GC 过程 | GC 和 Trim 的关系
- ES doc_values介绍2——本质是field value的列存储,做聚合分析用,ES默认开启,会占用存储空间
- Python实现将图片上传到基于阿里云OSS对象存储的图床
- JVM中如何存储对象和类
- MySQL复习资料(七)——MySQL-存储过程
- 12 图入门高性能分布式对象存储 MinIO
- proxmox 添加存储 NFS RBD