tencentcloud-typecho-plugin-cos-此份为准.zip
public static function attachmentHandle(array $content)
{
获取设置参数
$opt = Options::alloc()->plugin(pluginName);
$cosClient = self::CosInit();
if ($opt->sign == 'open') {
return $cosClient->getObjectUrl($opt->bucket, $content['attachment']->path, '+60 minutes');
}
if (!empty($opt->cdn_domain)) {
return $opt->cdn_domain . $content['attachment']->path;
}
return $cosClient->getObjectUrlWithoutSign($opt->bucket, $content['attachment']->path);
}
这一段的功能
这段代码是一个用于处理附件(通常是图片等媒体文件)访问路径的静态方法,主要功能是根据插件配置,生成腾讯云COS(对象存储)中附件的访问URL,适用于Typecho或类似PHP博客系统中,将本地附件链接替换为COS上的链接。
具体功能解析如下:
- 获取插件配置参数
$opt = Options::alloc()->plugin(pluginName);
从系统配置中读取当前插件(如TypechoCosPlugin)的设置,包括存储桶(bucket)、是否启用签名URL、CDN域名等参数。 - 初始化COS客户端
$cosClient = self::CosInit();
调用内部方法初始化腾讯云COS的客户端实例,用于后续生成访问URL。 根据签名配置生成URL
- 若插件设置中启用了签名URL(
$opt->sign == 'open'
):
调用getObjectUrl()
生成带有时效性签名的URL,有效期为60分钟('+60 minutes'
)。
这种URL适合私有存储桶,通过签名验证权限,过期后无法访问,增强安全性。 - 若未启用签名,但配置了CDN域名(
$opt->cdn_domain
):
直接拼接CDN域名和附件在COS中的路径($content['attachment']->path
),生成类似https://cdn.example.com/xxx/xxx.jpg
的URL。
适合通过CDN加速访问COS资源的场景。 - 若以上条件都不满足:
调用getObjectUrlWithoutSign()
生成无签名的公开访问URL,直接指向COS默认域名。
适合存储桶设置为“公有读”的场景,任何人可直接访问。
- 若插件设置中启用了签名URL(
总结:这段代码的核心作用是根据插件的不同配置(签名、CDN、公开访问),动态生成附件在腾讯云COS上的访问链接,实现博客附件的云端存储与访问,同时兼顾安全性和访问速度。
cos再自定义CDN域名,终版配置如下
累了,搞了5个小时,烦的,洗澡睡觉了。