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、上传成功便可以在腾讯云后台看到上传的文件及路径了

 

PS:更多API接口如文件夹的创建、删除等请查看官方快速入门文档接口文档以及demo

posted @ 2018-04-23 18:07  郁冬  阅读(4751)  评论(0编辑  收藏  举报