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

简单代码示例:

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

56ce7b3f64cb8e8645728aad9b87b22e.png

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

a9e8da40e38bcec58750c4289e5f8132.png

具体代码:

// 初始化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;

}

上传代码示例:

37a1549b253b02296953d0f020244692.png

代码示例:

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

标签:存储,cosClient,示例,result,array,PHP,上传

来源: https://www.cnblogs.com/e0yu/p/13937081.html

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐