腾讯云存储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签名才能读取,但是可以修改权限,共有读私有写,或者共有读写就行。