參考:http://www.thinkphp.cn/extend/789.htmlphp
一、前往阿里雲github下載SDK包:https://github.com/aliyun/aliyun-oss-php-sdk/releases。
這裏介紹源碼部署:Source code下載下來。.phar其實就是一個打包文件,直接引用後就能用,你們本身去試試吧,功能是同樣的。
二、將下載下來的壓縮包解壓後放到項目ThinkPHP\Library\Vendor\aliyun路徑下。aliyun文件夾是我本身建的,你們能夠本身命名。
三、在控制器中編寫代碼:
控制器中要加入
use OSS\Core\OssException;//否則OssException 報錯
配合upload上傳類(圖片爲例)
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
$upload->rootPath = './Public/uploads/'; // 設置附件上傳根目錄
$upload->savePath = ''; // 設置附件上傳(子)目錄
$upload->saveName = array('uniqid','');
// 上傳文件
$info = $upload->upload();
if(!$info) {// 上傳錯誤提示錯誤信息
//處理上傳錯誤信息
}else{// 上傳成功
vendor('aliyun.autoload');
$accessKeyId = "";//去阿里雲後臺獲取祕鑰
$accessKeySecret = "";//去阿里雲後臺獲取祕鑰
$endpoint = "";//你的阿里雲OSS地址
$ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint);
$bucket= "";//oss中的文件上傳空間
$object = date('Y-m-d').'/'.$info['imgfile']['savename'];//想要保存文件的名稱
$file = './Public/uploads/'.$info['imgfile']['savepath'].$info['imgfile']['savename'];//文件路徑,必須是本地的。
try{
$ossClient->uploadFile($bucket,$object,$file);
//上傳成功,本身編碼
//這裏能夠刪除上傳到本地的文件。unlink($file);
} catch(OssException $e) {
//上傳失敗,本身編碼
printf($e->getMessage() . "\n");
return;
}
}
項目實例,,我是這樣處理的。。html
第一步:下載:https://github.com/aliyun/aliyun-oss-php-sdk/releasesgit
核心文件:放到ThinkPHP\Library\Vendor\下,新建文件aliyun。github
第二步,配置文件:config.php..這個不能出錯。。。thinkphp
//阿里雲OSS文件上傳配置 'accessKeyId' => 'XXXX',//去阿里雲後臺獲取祕鑰 'accessKeySecret' => 'yyyy',//去阿里雲後臺獲取祕鑰 'endpoint' => 'zzzz',//你的阿里雲OSS地址 'bucket' => 'wwwwww',//oss中的文件上傳空間
第三步:要引用的控制器下引用:use OSS\Core\OssException;測試
如:this
if ($_FILES['plan_name']['size'] < 204800000 && in_array($type['extension'], array('pdf'))) { if ($a = uploadImage($_FILES[plan_name], $this->admin[id] . '_' . $t)) { $_POST[plan_name] = $this->admin[id] . '_' . $t; } // 2016-1-12 添加開始 $upload = new \Think\Upload();// 實例化上傳類 $upload->maxSize = 314572800 ;// 設置附件上傳大小 $upload->exts = array('pdf','PDF');// 設置附件上傳類型 $upload->rootPath = './Application/Public/upload/'; // 設置附件上傳根目錄 $upload->savePath = 'fqlc/'; $info = $upload->upload(); $getOssPdfUrl = ''; if($info){ vendor('aliyun.autoload'); $ossClient = new \OSS\OssClient(C('accessKeyId'),C('accessKeySecret'),C('endpoint')); $object = date('Y-m-d').'/'.$info['plan_name']['savename'];//想要保存文件的名稱 $file = $upload->rootPath.$info['plan_name']['savepath'].$info['plan_name']['savename'];//文件路徑,必須是本地的。 try{ $getOssInfo = $ossClient->uploadFile(C('bucket'),$object,$file); $getOssPdfUrl = $getOssInfo['info']['url']; if($getOssPdfUrl){ unlink($file); // rmdir($upload->rootPath.$upload->savePath,0777); } }catch(OssException $e){ printf($e->getMessage() . "\n"); return; } } // 2016-1-12 添加結束 } }
第四步。。測試,,OK。。。阿里雲