腾讯云Cos云存储Thinkphp使用方法
1、首先在项目当中利用Composer下载Cos的包
composer require qcloud/cos-sdk-v5
2、然后查看以下案例
<?php
namespace app\qiugong\controller;
use think\facade\Db;
use think\facade\Request;
/**
* Class Cos
* 腾讯云Cos云存储
* Developers:ZhouQiugong
* @package app\home\controller
*/
class Cos extends Base
{
// SecretId
protected $SecretId = "xxxxx";
// SecretKey
protected $SecretKey = "xxxxxx";
// Bucket
protected $bucket = "xxxxxxx";
/**
* 初始化 Cos
* Developers:ZhouQiugong
* @return \Qcloud\Cos\Client
*/
public function initCos()
{
$cosClient = new \Qcloud\Cos\Client([
'region' => 'ap-guangzhou', //设置一个默认的存储桶地域
'schema' => 'http', //协议头部,默认为http
'credentials' => ['secretId' => $this->SecretId, 'secretKey' => $this->SecretKey]
]);
return $cosClient;
}
/**
* Base64上传cos
* Developers:ZhouQiugong
* @return \think\response\Json
*/
public function upload()
{
// 上传Base64图片
$imgBase64 = input('base64');
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $imgBase64, $res)) {
// 图片大小
$size = file_get_contents($imgBase64);
// 获取图片类型
$type = $res[2];
// 文件
$fileName = '/' . date('Ymd') . '/' . md5(time() . rand(1000, 9999)) . '.' . $type;
//截取data:image/png;base64, 这个逗号后的字符
$base64_string = explode(',', $imgBase64);
//对截取后的字符使用base64_decode进行解码
$tmp_name = base64_decode($base64_string[1]);
// 初始化Cos
$cosClient = $this->initCos();
// 拼接COS请求数据包
$data = ['Bucket' => $this->bucket, 'Key' => $fileName, 'Body' => $tmp_name];
// 执行Cos上传操作
$result = $cosClient->Upload($data['Bucket'], $data['Key'], $data['Body']);
// 将保存在Cos的图片记录保存到数据库
Db::name('cos_files')->insert([
'file_name' => $result['Key'],
'url' => $result['Location'],
'size' => strlen($size) / 1024,
'status' => 1,
'time' => time()
]);
// 拼接地址返回前端
$url = "https://xxx.xxx.com/" . $result['Key'];
// 输出到前端
return json(['status' => 200, 'msg' => '上传成功', 'url' => $url]);
}
}
/**
* Cos 删除单个文件
* Developers:ZhouQiugong
* @param $key
* @return \think\response\Json
* @throws \think\Exception
* @throws \think\exception\PDOException
*/
public function delFile($key)
{
$bucket = $this->bucket;
$cosClient = $this->initCos();
$result = $cosClient->deleteObject(['Bucket' => $bucket, 'Key' => $key]);
if ($result) {
Db::name('cos_files')->where(['file_name' => $key, 'status' => 1])->delete();
return json(['status' => 200, 'msg' => '删除成功']);
} else {
return json(['status' => 500, 'msg' => '删除失败']);
}
}
}
可以直接复制方法到控制器当中测试!
hello world
hello world
azithromycin syrup
azithromycin syrup
doxycycline monohydrate
doxycycline monohydrate
fluconazole for yeast infection otc
fluconazole for yeast infection otc
tetracyklina
tetracyklina
prevacid medication
prevacid medication
augmentin antibiotico
augmentin antibiotico
metoprololo
metoprololo