zoukankan      html  css  js  c++  java
  • DT添加七牛云对象存储插件功能

      七牛云对象存储  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."
    ";
            $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));
        }
    }
    ?>
    

      

    配置例如:

    1. FTP主机:upload.qiniu.com
    1. FTP帐号:AccessKey 例如:db2N1b4xpqtA7UltwE97feeetgssYNjHFf9k-ZFs
    1. FTP密码:SecretKey 例如:E_1yje34kU6Zq-EVsqgxducdfcdc6nZiLshMpL_O
    1. 远程存储目录:存储空间 bucket 名称 例如:zhimo-yuanzhumuban-cc
    1. 远程访问URL:绑定域名 例如:http://zhimo.yuanzhumuban.cc/
  • 相关阅读:
    elasticsearch 7.8.X 数据类型与使用规范
    Elasticsearch 7.8.x 设置账号密码的问题。基础级安全
    swoft2.x 扩展elasticsearch 组件
    一张图理清js原型链(通过内置对象的引用关系)
    在webkit中如何避免触发layout(重排)
    no-cache、max-age=0、must-revalidate区别
    HTTP缓存机制[译文]
    v8 源码获取与build
    CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (四)问题汇总
    CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (三)Nginx负载均衡配置
  • 原文地址:https://www.cnblogs.com/68xi/p/11553727.html
Copyright © 2011-2022 走看看