爲了加快網站訪問速度、下降網站負載,如今愈來愈多的網站選擇把圖片等靜態文件放在雲上,這裏介紹一下騰訊雲對象存儲在Laravel項目中的使用php
一、申請騰訊雲對象存儲、建立Bucket、獲取APPID等參數,配置在.ENV文件git
二、下載官方SDK
github
在composer.json文件添加以下代碼
json
{ "require": { "qcloud/cos-sdk-v5": ">=1.0" } }
composer install
app
三、在公共文件中引入SDK
composer
use Qcloud\Cos\Api;
四、使用SDK上傳文件dom
function uploadImg($fileName,$realPath){ $cosClient = new Qcloud\Cos\Client(array('region' => env('REGION'), 'credentials'=> array( 'appId' => env('APPID'), 'secretId' => env('SECRETID'), 'secretKey' => env('SECRETKEY')))); try { $result = $cosClient->putObject(array( 'Bucket' => env('BUCKET'), 'Key' => $fileName, 'Body' => fopen($realPath, 'rb'), 'ServerSideEncryption' => 'AES256')); } catch (\Exception $e) { echo "$e\n"; echo '</br> 失敗'; } }
其中Key是騰訊雲要上傳的路徑加文件名,Body是現文件的路徑ide
五、控制器調用上傳方法網站
public function testv5() { $file = Input::file('logo'); //判斷是否爲空 if(empty($file)){ return back()->withErrors('請上傳logo')->withInput(); } //取得上傳文件的大小 $sizes = $file->getSize(); $size = $sizes/1024; if($size > UPLOAD_IMAGE_MAXSIZE){ return back()->withErrors(['上傳的圖片不能超過2M'])->withInput(); } //格式不對提醒 $ext = $file->getClientOriginalExtension(); // 擴展名 $allowed_extensions = explode('|',UPLOAD_IMAGE_ALLOWED); if ($ext && !in_array($ext, $allowed_extensions)) { return back()->withErrors(['您只能上傳png、jpg、jpeg或者gif格式的文件'])->withInput(); } // 獲取文件相關信息 $realPath = $file->getRealPath(); //臨時文件的絕對路徑 //上傳路徑 $fileName =env('FILEPATH').str_random(10).time().'.'.$ext; //拼接圖片名 uploadImg($fileName,$realPath); }
六、上傳成功即可以在騰訊雲後臺看到上傳的文件及路徑了ui