1,腾讯云提供了一些开源平台的图片存储插件,可以在插件库中查看
https://gitee.com/organizations/Tencent-Cloud-Plugins/projects
2,joomla与腾讯云存储对接机制,就是在内容/分类上传图片/视频/语音/文档时,上传云存储,然后返回对应的访问路径。(如果上传的路径有相关文件夹要创建,会自动创建)
3,tencentcloud-joomla-plugin-cos 【Joomla】腾讯云对象存储(COS)插件
插件存的问题:
(1),提交时,joomla内容管理/分类管理,涉及到的图片都会上传,但api接口返回时,这些图片路径没有组合成云存储路径。只对images,text,introtext 基础字段进行了处理。
如果是扩展字段则没处理。在配置中新增一个要处理的自定义字段配置项,对里面的字段进行图片/视频/文档等云存储路径的处理。
自定义字段类型:editor ,subform,media 处理的方式是不一样的,需要根据自定义自段存储格式来处理。
subform类型字段格式:一个视频图及对应的视频封面图片,可以上传多个视频。
{“row0”:{“field68”:{“imagefile”:“/static/video/4eb03761c97246cb9b30fc8883c181ce.mp4”,“alt_text”:“”},“field89”:{“imagefile”:“images/ffc6e668132840cfafa7d4432716076a.jpeg”,“alt_text”:“”}},“row1”:{“field68”:{“imagefile”:“/static/video/f9fded311b2f40c982ec60521ec474fd.mp4”,“alt_text”:“”},“field89”:{“imagefile”:“images/ffc6e668132840cfafa7d4432716076a.jpeg”,“alt_text”:“”}}}
media类型字段格式:一张图片
{“imagefile”:“/static/logo/b91a3b1e7adb4773b4a9496094a6cca3.jpg”,“alt_text”:“”}
editor类型字段格式:一段内容,包含图片/视频/文档路径 直接进行替换
替换方法:
private function replaceImageUrl($text, $cos_options)
{
if (empty($text)) {
return $text;
}
preg_match_all('/<a[^>]+href=([\'"])(?<href>.+?)\1[^>]*>/i', $text, $hrefResult);
preg_match_all('/<img[^>]+src=([\'"])(?<src>.+?)\1[^>]*>/i', $text, $srcResult);
$result = array_merge($hrefResult['href'], $srcResult['src']);
if (empty($result)) {
return $text;
}
$ciUrl = (new TencentcloudCosAction())->getCiRule();
foreach ($result as $link) {
$replaceString = $cos_options['remote_url'] . "/" . ltrim($link, '/');
if (isset($cos_options['cloud_infinite']) && $cos_options['cloud_infinite'] === 1) {
$replaceString .= "?" . $ciUrl;
}
$text = str_replace($link, $replaceString, $text);
}
return $text;
}