This is a Flysystem adapter for the Tencent COS.
larva/laravel-flysystem-cos is a Laravel package for this is a flysystem adapter for the tencent cos..
It currently has 6 GitHub stars and 2.589 downloads on Packagist (latest version 2.1.1).
Install it with composer require larva/laravel-flysystem-cos.
Discover more Laravel packages by larva
or browse all Laravel packages to compare alternatives.
Last updated
适用于 Laravel 的腾讯云 COS(对象存储)适配器,基于 Flysystem v3 封装,完整支持腾讯云 COS V5 SDK 的所有方法和操作。
composer require larva/laravel-flysystem-cos -vv
安装完成后,修改配置文件 config/filesystems.php,在 disks 中添加一个磁盘配置:
'cos' => [
'driver' => 'cos',
// 'endpoint' => env('TENCENT_COS_ENDPOINT'), // 接入点,留空即可
'region' => env('TENCENT_COS_REGION'), // 存储桶所在区域,如 ap-guangzhou
'credentials' => [ // 认证凭证
'appId' => env('TENCENT_COS_APP_ID'), // 存储桶名称后缀,如 1258464748
'secretId' => env('TENCENT_COS_SECRET_ID'),
'secretKey' => env('TENCENT_COS_SECRET_KEY'),
'token' => env('TENCENT_COS_TOKEN'), // 临时密钥时使用,可选
],
'bucket' => env('TENCENT_COS_BUCKET'), // 存储桶名称
'root' => env('COS_PREFIX'), // 存储路径前缀,可选
'url' => env('TENCENT_COS_URL'), // CDN 加速域名,可选
// 以下均可省略
'scheme' => 'https', // 协议头,默认 http
'timeout' => 3600,
'connect_timeout' => 3600,
'ip' => null,
'port' => null,
'domain' => null,
'proxy' => null,
'encrypt' => null,
],
如果需要将 COS 设为默认存储驱动,修改 default 配置:
'default' => 'cos',
在 .env 文件中配置对应的环境变量:
TENCENT_COS_REGION=ap-guangzhou
TENCENT_COS_APP_ID=1258464748
TENCENT_COS_SECRET_ID=your-secret-id
TENCENT_COS_SECRET_KEY=your-secret-key
TENCENT_COS_TOKEN=
TENCENT_COS_BUCKET=your-bucket-name
COS_PREFIX=
TENCENT_COS_URL=https://cdn.example.com
使用方式与 Laravel 文件系统一致,详细文档请参考 Laravel 文件系统文档。
use Illuminate\Support\Facades\Storage;
// 获取 COS 磁盘实例
$disk = Storage::disk('cos');
// 写入文件
$disk->put('path/to/file.txt', '文件内容');
// 读取文件
$contents = $disk->get('path/to/file.txt');
// 检查文件是否存在
$exists = $disk->exists('path/to/file.txt');
// 删除文件
$disk->delete('path/to/file.txt');
// 上传本地文件
$disk->putFile('uploads', new \Illuminate\Http\UploadedFile($path, $filename));
// 获取公共文件的访问 URL
$url = Storage::disk('cos')->url('path/to/file.jpg');
// 获取私有文件的临时访问 URL(有效期 5 分钟)
$tempUrl = Storage::disk('cos')->temporaryUrl(
'path/to/private-file.pdf',
now()->addMinutes(30)
);
如需直接操作腾讯云 COS SDK,可获取底层客户端实例:
$client = Storage::disk('cos')->getClient();
// 使用 COS SDK 直接操作
$result = $client->listObjects([
'Bucket' => 'your-bucket-name',
'Prefix' => 'uploads/',
]);