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上的链接。

具体功能解析如下:

  1. 获取插件配置参数
    $opt = Options::alloc()->plugin(pluginName);
    从系统配置中读取当前插件(如TypechoCosPlugin)的设置,包括存储桶(bucket)、是否启用签名URL、CDN域名等参数。
  2. 初始化COS客户端
    $cosClient = self::CosInit();
    调用内部方法初始化腾讯云COS的客户端实例,用于后续生成访问URL。
  3. 根据签名配置生成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默认域名。
      适合存储桶设置为“公有读”的场景,任何人可直接访问。

总结:这段代码的核心作用是根据插件的不同配置(签名、CDN、公开访问),动态生成附件在腾讯云COS上的访问链接,实现博客附件的云端存储与访问,同时兼顾安全性和访问速度。
cos再自定义CDN域名,终版配置如下
2025-09-08T15:43:31.png
2025-09-08T15:45:46.png

累了,搞了5个小时,烦的,洗澡睡觉了。

最后修改:2025 年 09 月 09 日
如果觉得我的文章对你有用,请随意夸赞