Laravel项目使用腾讯云对象存储上传图片(cos-php-sdk-v5版本)
为了加快网站访问速度、降低网站负载,现在越来越多的网站选择把图片等静态文件放在云上,这里介绍一下腾讯云对象存储在Laravel项目中的使用
1、申请腾讯云对象存储、创建Bucket、获取APPID等参数,配置在.ENV文件
2、下载官方SDK
在composer.json文件添加如下代码
{
"require": {
"qcloud/cos-sdk-v5": ">=1.0"
}
}
composer install
3、在公共文件中引入SDK
use Qcloud\Cos\Api;
4、使用SDK上传文件
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是现文件的路径
5、控制器调用上传方法
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); }
6、上传成功便可以在腾讯云后台看到上传的文件及路径了