php泛域名
㈠ thinkphp配置七牛 domain參數什麼意思
'domain' => '<這里填七牛外鏈默認域名>',
第一步,注冊七牛雲,創建空間,將空間設為私有,需要記下的東西:
accessKey,secrectKey,domain,bucket
第二步配置ThinkPHP
在config.php添加
'UPLOAD_SITEIMG_QINIU' => array (
'maxSize' => 5 * 1024 * 1024,//文件大小
'rootPath' => './',
'saveName' => array ('uniqid', ''),
'driver' => 'Qiniu',
'driverConfig' => array (
'accessKey' => '<這里填七牛AK>',
'secrectKey' => '<這里填七牛SK>',
'domain' => '<這里填七牛外鏈默認域名>',
'bucket' => '<這里填七牛空間名稱>',
)
)
復制代碼
第三步,上傳文件
控制器
$setting=C('UPLOAD_SITEIMG_QINIU');
$Upload = new \Think\Upload($setting);
$info = $Upload->upload($_FILES);
復制代碼
上傳文件後得到的$info是這樣的
array(1) {
["photo"] => array(10) {
["name"] =>
["type"] =>
["size"] =>
["key"] =>
["ext"] =>
["sha1"] =>
["savename"] =>
["savepath"] =>
["url"] =>
}
}
復制代碼
第四步,計算下載憑證
Common目錄function.php添加方法
function Qiniu_Encode($str) // URLSafeBase64Encode
{
$find = array('+', '/');
$replace = array('-', '_');
return str_replace($find, $replace, base64_encode($str));
}
function Qiniu_Sign($url) {//$info裡面的url
$setting = C ( 'UPLOAD_SITEIMG_QINIU' );
$etime = NOW_TIME + 86400;//下載憑證有效時間
$DownloadUrl = $url . '?e=' . $etime;
$Sign = hash_hmac ( 'sha1', $DownloadUrl, $setting ["driverConfig"] ["secrectKey"], true );
$EncodedSign = Qiniu_Encode ( $Sign );
$Token = $setting ["driverConfig"] ["accessKey"] . ':' . $EncodedSign;
$RealDownloadUrl = $DownloadUrl . '&token=' . $Token;
return $RealDownloadUrl;
}
復制代碼
$RealDownloadUrl為下載對應私有資源的可用URL
注意
我在開發中沒有遇到QiniuStorage.class.php文件$ak和$sk值不對的問題,估計是官方已經修改這個bug。
但是我上傳文件是都是提示上傳地址不對,最後檢查發現七牛現在存儲區域已經支持華東,華北,華南等多個區域,但是官方還是華東的上傳地址,需要手動修改QiniuStorage.class.php文件的配置
public $QINIU_RSF_HOST = '';
public $QINIU_RS_HOST = 'h';
//public $QINIU_UP_HOST = '';//華東
//public $QINIU_UP_HOST = '';//華北
public $QINIU_UP_HOST = '';//華南
public $timeout = '';