为了加快网站访问速度、降低网站负载,现在越来越多的网站选择把图片等静态文件放在云上,这里介绍一下腾讯云对象存储在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、上传成功便可以在腾讯云后台看到上传的文件及路径了