云对象储存

研究一下午。

折腾半天……

各种失败,终于找到一个靠谱的教程。

记录一下……

插件安装

// 腾讯cos
composer require overtrue/flysystem-cos -vvv
// 阿里云oss
composer require iidestiny/flysystem-oss -vvv
// 七牛云oss
composer require overtrue/flysystem-qiniu -vvv
// 总控组件
composer require isszz/think-filesystem-driver -vvv

配置

// 打开config/filesystem.php文件
return [

    'disks'   => [
        // 七牛配置
	'qiniu' => [
		'type'       => 'qiniu',
		'access_key' => '',
		'secret_key' => '',
		'bucket'     => '',
		'domain'     => '', // or host: https://xxxx.xxx.top
	],
	// 阿里 oss 配置
	'oss' => [
		'type'       => 'oss',
		'access_key' => '',
		'secret_key' => '',
		'bucket'     => '',
		'domain'     => '', // ssl:https://xxxx.xxx.top
		'is_cname'   => '', // 如果 is_cname 为 false, domain 应配置 oss 提供的域名如:`oss-cn-beijing.aliyuncs.com`,cname 或 cdn 请自行到阿里 oss 后台配置并绑定 bucket
		'root'       => '', // 前缀,非必填
	],
        // 腾讯 cos 配置
	'cos' => [
		'type'			  => 'cos',
		'region'          => 'ap-beijing', // 地域
		'credentials'     => [
			'appId'		  => '1301……028', // 域名中数字部分
			'secretId'	  => 'AKIDobec……ZLmCIYvup',
			'secretKey'	  => 'ENuqguD……IF9zkmnibfv',
		],
		'bucket'          => 'yijiananping-1301608028',
		'cdn'             => 'https://xxxx-1301608028.cos.ap-beijing.myqcloud.com', // CDN 域名
		'scheme'          => 'https',
		'read_from_cdn'   => false,
		'timeout'         => 60,
		'connect_timeout' => 60,
	],
    ],
    
];

使用,控制器部分

// 引入
use think\facade\Filesystem;
public function SubForm () {
    set_time_limit(0);  //防止上传大文件超时
    # 初始化
    $disk = Filesystem::disk('cos');
    # 获取文件
    $file = request()->file('photo1');
    // 上传文件
    // 程序会自动按照时间创建目录,参数1为根目录名,返回文件夹+文件名
    $filepath = $disk->putFile('weiting', $file);
    // 返回上传成功后的地址
    $url = $disk->getAdapter()->getUrl($filepath);
    dump($url);
}

其它方法(阿里和七牛类似)

其它方法(七牛和阿里,基础用法相同。对我的项目而言,已经基本够用了)

# 改名
$disk->rename('foo.md', 'bar.md');
# 复制 
$disk->copy('foo.md', 'foo2.md');
# 更新/替换 
$disk->update('foo.md', '新文件');
# 判断是否存在 
$disk->has('foo.md');
# 大小 
$disk->getSize('foo.md');
# 请求类型 
$disk->getMimetype('foo.md');
# 上传时间 
$disk->getTimestamp('weiting/20210421\7e62a124b35ccecb24abd564d8dbe485.JPG');
# 删除图片 
$disk->delete('foo.md');
# delete()的参数需为目录名+文件名,因此存库时,尽量把$filepath的返回值存一下。
# 由于返回值会出现\,\与数字挨着会报错,因此用单引号最合适,成功返回true。
# 如:
$disk->delete('weiting/20210421\7e62a124b35ccecb24abd564d8dbe485.JPG');

人已赞赏
插件

导入导出excel

2021-4-20 23:33:27

互联网

专业生产内容PGC

2021-4-20 23:19:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索