推荐使用 overtrue/laravel-filesystem-cos
https://github.com/overtrue/laravel-filesystem-cos
基于 overtrue/flysystem-cos 的 Laravel 腾讯云 COS 存储扩展。
composer require "overtrue/laravel-filesystem-cos" -vvv
在 config/ilesystems.php
配置文件中添加一个新的disk
<?php
return [
'disks' => [
//...
'cos' => [
'driver' => 'cos',
'app_id' => env('COS_APP_ID'),
'secret_id' => env('COS_SECRET_ID'),
'secret_key' => env('COS_SECRET_KEY'),
'region' => env('COS_REGION', 'ap-guangzhou'),
'bucket' => env('COS_BUCKET'), // 不带数字 app_id 后缀
'cdn' => env('COS_CDN'),
'signed_url' => false,
'prefix' => env('COS_PATH_PREFIX'), // 全局路径前缀
'guzzle' => [
'timeout' => env('COS_TIMEOUT', 60),
'connect_timeout' => env('COS_CONNECT_TIMEOUT', 60),
],
],
//...
]
];
$disk = Storage::disk('cos');
// create a file
$disk->put('avatars/filename.jpg', $fileContents);
// check if a file exists
$exists = $disk->has('file.jpg');
// get timestamp
$time = $disk->lastModified('file1.jpg');
$time = $disk->getTimestamp('file1.jpg');
// copy a file
$disk->copy('old/file1.jpg', 'new/file1.jpg');
// move a file
$disk->move('old/file1.jpg', 'new/file1.jpg');
// get file contents
$contents = $disk->read('folder/my_file.txt');
// get file url
$url = $disk->getUrl('folder/my_file.txt');
完整的使用文档请参考 :API文档
http://flysystem.thephpleague.com/api/
该扩展disk名称默认写死了cos
, 因此默认只支持一套cos配置,若项目需要多套cos配置可以自己注册服务,引入不同的cos配置
在 app/Providers/AppServiceProvider.php
文件的boot()
方法中注册一个新的cos驱动的disk
use League\Flysystem\Filesystem;
use Overtrue\Flysystem\Cos\CosAdapter;
use Overtrue\Flysystem\Cos\Plugins\FileSignedUrl;
use Overtrue\Flysystem\Cos\Plugins\FileUrl;
public function boot()
{
Storage::extend('backup_cos', function () {
$adapter = new CosAdapter(\config('filesystems.disks.backup_cos'));
$filesystem = new Filesystem($adapter);
$filesystem->addPlugin(new FileUrl());
$filesystem->addPlugin(new FileSignedUrl());
return $filesystem;
});
}
另外对于非Laravel框架的PHP项目可使用 overtrue/flysystem-cos 扩展
[1]
overtrue/laravel-filesystem-cos: https://github.com/overtrue/laravel-filesystem-cos[2]
API文档: http://flysystem.thephpleague.com/api/[3]
overtrue/flysystem-cos: https://github.com/overtrue/flysystem-cos