1、阿里oss
composer require jacobcyl/ali-oss-storage:^2.1
2、腾讯cos
composer require "freyo/flysystem-qcloud-cos-v5:^2.0"
3、七牛云
composer require qiniu/php-sdk
1、阿里oss
'disks'=>[
...
'oss' => [
'driver' => 'oss',
'access_id' => env('ALIOSS_KEYID', null), //Your Aliyun OSS AccessKeyId
'access_key' => env('ALIOSS_KEYSECRET', null), //Your Aliyun OSS AccessKeySecret
'bucket' => env('ALIOSS_BUCKETNAME', null), //OSS bucket name
'endpoint' => env('ALIOSS_ENDPOINT', null), // OSS 外网节点或自定义外部域名
'endpoint_internal' => env('ALIOSS_ENDPOINT_INTERNAL', null), // v2.0.4 新增配置属性,如果为空,则默认使用 endpoint 配置(由于内网上传有点小问题未解决,请大家暂时不要使用内网节点上传,正在与阿里技术沟通中)
'cdnDomain' => env('ALIOSS_DOMAIN', null), // 如果isCName为true, getUrl会判断cdnDomain是否设定来决定返回的url,如果cdnDomain未设置,则使用endpoint来生成url,否则使用cdn
'ssl' => env('ALIOSS_SSL', false), // true to use 'https://' and false to use 'http://'. default is false,
'isCName' => env('ALIOSS_CNAME', false), // 是否使用自定义域名,true: 则Storage.url()会使用自定义的cdn或域名生成文件url, false: 则使用外部节点生成url
'debug' => env('ALIOSS_DEBUG', true),
],
]
2、腾讯cos
'cloud' => env('FILESYSTEM_CLOUD', 'cosv5'),
'disks' => [
// 腾讯云 cos 存储
'cosv5' => [
'driver' => 'cosv5',
'region' => env('COSV5_REGION', 'ap-shanghai'), // 需要设置
'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'),
],
],
3、七牛云
'disks' => [
... ,
'qiniu' => [
'driver' => 'qiniu',
'domains' => [
'default' => 'xxxxx.com1.z0.glb.clouddn.com', //你的七牛域名
'https' => 'dn-yourdomain.qbox.me', //你的HTTPS域名
'custom' => 'static.abc.com', //你的自定义域名
],
'access_key'=> '', //AccessKey
'secret_key'=> '', //SecretKey
'bucket' => '', //Bucket名字
'notify_url'=> '', //持久化处理回调地址
'url' => 'http://of8kfibjo.bkt.clouddn.com/', // 填写文件访问根url
],
],
三、Storage 使用
//实例化
$disk=Storage::disk('oss');
//存储地址
$dir="xx/xx";
// 上传文件 第一个参数是储存位置,第二个参数是文件内容
$disk->put($dir.'/file.jpg', "xxxx");
// 判断指定对象是否存在
$disk->exists($disk.'/file.jpg');
// 获得指定位置下的所有目录
$disk->directories($dir);
// 递归获得指定位置下的所有目录
$disk->allDirectories($dir);
// 重命名指定对象 参数1要改变的文件 参数2新名称
$disk->rename($dir.'file.jpg', $dir.'/file1.jpg');
// 删除对象 单个文件也可以直接写url
$disk->delete([$dir.'file1.jpg', $dir.'file2.jpg']);
// 创建指定目录
$disk->makeDirectory($dir);
// 删除指定目录 目录中的所有文件同样会被删除 请慎重使用
$disk->deleteDirectory($dir);
// 获得指定文件的访问地址
$disk->url($url.'/img.jpg');