destoon添加七牛雲對象存儲插件功能

    七牛雲對象存儲  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));
    }
}
?>

  

配置例如:

  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/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章