感觉ThinkPHP对第三方的sdk的支持不是特别友好,这次使用七牛云sdk时就是这个问题,虽然ThinkPHP有自带的七牛上传驱动,但是肯定不如七牛自己更新的sdk好,毕竟是很久之前的版本了。
想使用ThinkPHP自带的七牛云可以参考我的另外一篇文章:http://www.thinkphp.cn/topic/46397.html
下面说一下如何整合新版七牛云sdk
第一步,注册七牛云,创建空间,下载sdk这些就不说了
第二步,修改七牛云sdk文件的命名格式和sdk文件里面的命名空间
这里有一个小问题还望高手给予指点
因为七牛云sdk也使用了命名空间,但是文件命名不符合ThinkPHP的规范,这种情况该放到哪里呢?
目前我有两种做法
一种是直接放到项目的Application目录下,这样可以直接修改文件命名就好,不用修改sdk文件里面的命名空间
另外一种是放到项目的Application\Tool目录下(所有的第三方类都放到这个目录下),不过这样的缺点就是修改七牛云sdk文件的命名格式和sdk文件里面的命名空间(吐槽一下,还好七牛云sdk文件不算太多,不然一个个修改也是一个大工程,如果有高手有更好的方法欢迎指点 )
第三步,调用sdk
分为两种调用方法,请大家自行选择
//use \Qiniu\Auth;
//use \Qiniu\Storage\UploadManager;
use \Tool\Qiniu\Auth;
use \Tool\Qiniu\Storage\UploadManager;
public function uploadQiNiu(){
//import('Qiniu.functions');
import('Tool.Qiniu.functions');
// 用于签名的公钥和私钥
$accessKey = '**';
$secretKey = '**';
// 初始化签权对象
$auth = new Auth($accessKey, $secretKey);
// 空间名 https://developer.qiniu.io/kodo/manual/concepts
$bucket = 'bucket-name';
// 生成上传Token
$token = $auth->uploadToken($bucket);
echo $token;exit;
// 构建 UploadManager 对象
$uploadMgr = new UploadManager();
// 上传文件到七牛
$filePath = './php-logo.png';
$key = 'php-logo.png';
list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
echo "\n====> putFile result: \n";
if ($err !== null) {
var_dump($err);
} else {
var_dump($ret);
}
}
http://download.csdn.net/detail/baikeliang/9766595
里面共享我已经修改好的sdk文件,版本Release v7.1.3