1.当我们在开发过程中,常常会因为图片过多导致服务器压力增大,减缓网站运行速度
2.所以我们用到了腾讯的COS服务
第一步:首先我们去腾讯云里面申请一个桶(远程存储)https://console.cloud.tencent.com/cos5/bucket
第二步:因为使用这个桶我们需要两个密钥(云 API 密钥 SecretId,云 API 密钥 SecretKey)所以我们得再去申请这两个密钥
https://console.cloud.tencent.com/cos5/key
这两个东西都完善后,就是代码实现过程
laravel框架
①:composer require freyo/flysystem-qcloud-cos-v5
②:在 config/app.php 的 providers 下添加->>>>>Freyo\Flysystem\QcloudCOSv5\ServiceProvider::class,
③:在 filesystems.php 中的 disks 里下添加
'disks'=>[
// ...
'cosv5' => [
'driver' => 'cosv5',
'region' => env('COSV5_REGION', 'ap-guangzhou'),
'credentials' => [
'appId' => env('COSV5_APP_ID'),
'secretId' => env('COSV5_SECRET_ID'),
'secretKey' => env('COSV5_SECRET_KEY'),
],
'timeout' => env('COSV5_TIMEOUT', 60),
'connect_timeout' => env('COSV5_CONNECT_TIMEOUT', 60),
'bucket' => env('COSV5_BUCKET'),
'cdn' => env('COSV5_CDN'),
'scheme' => env('COSV5_SCHEME', 'https'),
],
],
④:在/filesystems.php中修改
‘default’ => ‘cosv5’,
<?php
namespace App\Http\Controllers\crontab;
use Qcloud\Cos\Client;
class CosController extends CrontabBaseController
{
protected $crontab;
protected $user;
protected $cosClient;
public function __construct()
{
parent::__construct();
$secretId = "AKIDvAB0e4hOGxQecjZFnAIBmCNM"; //"云 API 密钥 SecretId";
$secretKey = "teDWZMuCF2qQlx0oX5NIlz3sVP"; //"云 API 密钥 SecretKey";
$region = "ap-beijing"; //设置一个默认的存储桶地域
$this->cosClient = new Client(
array(
'region' => $region,
'schema' => 'https', //协议头部,默认为http
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));
}
/**
* 上传图片的到COS
*/
public function add_cos(){
try {
$bucket = 'jiawei-1258859392'; //存储桶名称
$key = "/picture/180927085458.jpeg";//文件在桶中的位置
$srcPath = "http://62.234.77.1//uploads/180927085458.jpeg";//本地文件绝对路径
$result = $this->cosClient->putObject(array(
'Bucket' => $bucket,
'Key' => $key,
'Body' => fopen($srcPath, 'rb')));
print_r($result);
} catch (\Exception $e) {
echo "$e\n";
}
}
/**
* 获取远程桶的所有内容
*/
public function listObjects(){
try {
$bucket = "jiawei-1258859392"; //存储桶名称 格式:BucketName-APPID
$prefix = ''; // 列出对象的前缀
$marker = ''; // 上次列出对象的断点
while (true) {
$result = $this->cosClient->listObjects(array(
'Bucket' => $bucket,
'Marker' => $marker,
'MaxKeys' => 1000 // 设置单次查询打印的最大数量,最大为1000
));
foreach ($result['Contents'] as $rt) {
// 打印key
echo($rt['Key'] . "\n");
}
$marker = $result['NextMarker']; // 设置新的断点
if (!$result['IsTruncated']) {
break; // 判断是否已经查询完
}
}
} catch (\Exception $e) {
echo($e);
}
}
}