腾讯云存储PHP上传实例【代码示例】

最近遇到一个项目,考虑到会上传大量的手机照片,而手机的照片尺寸比较大,服务器增加存储盘来存照片,成本太大,最终考虑是用云存储,成本降了很多,服务器买的是腾讯的,所以使用的是腾讯的云存储。

简单代码示例:

第一步:首先下载腾讯云存储的SDK(cos-PHP-sdk-v5)

配置具体的参数:(具体的参数配置参考腾讯云COS存储,新建存储桶,获取秘钥等)

具体代码

// 初始化COS
private function initCos(){
    require './cosPHPsdkv5/index.PHP';
    $secretId = "AKIDay6aaaaaaaaaawsh2A2"; //"云 API 密钥 SecretId";
    $secretKey = "rUqzrLdddddddddddddddddvwkHZa"; //"云 API 密钥 SecretKey";
    $region = "ap-nanjing"; //设置一个认的存储桶地域
    $cosClient = new \Qcloud\Cos\Client(
        array(
            'region' => $region,
            'schema' => 'http', //协议头部,认为http
            'credentials'=> array(
                'secretId'  => $secretId ,
                'secretKey' => $secretKey
            )
        )
    );
    return $cosClient;
}

上传代码示例:

代码示例:

public function cosupload(){
    set_time_limit(0);//防止上传文件超时
    // 判断上传文件类型
    $types = 'image'; // 图片类型
    if (!in_array($types,explode('/',$file['type']))) {
        return json_encode(['code' => 0, 'msg' => '类型错误不支持文件类型', 'off' => 0]);
    }
    // 图片目录
    $imgdirectory = "picture";
    $bucket = "picture-1255572032"; // 存储桶名称
    $filename = explode('.', $file['name']);
    $key = date('Ymd').'/'.md5(time().'http://' . $_SERVER['HTTP_HOST'].rand(0,9999)).'.'.end($filename);
    $cosClient = $this->initCos();
    try{
        $result = $cosClient->putObject(array(
            'Bucket' => $bucket,
            'Key' => $key,
            'Body' => fopen($file['tmp_name'], 'rb') 
        ));
        var_dump($result);
    }catch(\Exception $e){
        echo "$e\n";
    }
    // try{            
    //     // $result = $cosClient->putObject(array(
    //     //     'Bucket' => $bucket,
    //     //     'Key' => $key,
    //     //     'Body' => '说的不错呀~'
    //     // ));
    //     $result = 
    // }catch(\Exception $e){
    //     echo "$e\n";
    // }
}

遇到的问题,图片上传成功,但是直接访问,访问不了,原因是:存储桶的权限是私有读写,需要sign签名才能读取,但是可以修改权限,共有读私有写,或者共有读写就行。

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...