WordPress基于腾讯云COS存储站点图片及跨域解决方法

昨天我把站点内的所有图片 copy 了一份到腾讯云的 COS 存储,腾讯云 COS 对象存储是腾讯云为企业和个人开发者们提供的一种能够存储海量数据的分布式存储服务,用户可随时通过互联网对您的大量数据进行批量存储和处理,也就是说,我们可以拿来当做 WordPress 的图床使用,并且使用 COS 标准存储的用户,每月还可享受一定的免费额度的。

免费额度

资源类型 资源子类型 每月免费额度
存储空间 存储空间 50 GB
流量 外网下行流量 10 GB
流量 腾讯云 CDN 回源流量 10 GB
请求 读请求 100 万次
请求 写请求 100 万次

这对于我们个人小站点来说应该是够用的,我是直接拿来存图片了,其他 js,css 等静态文件还没想好放不放。。。下面我们直接使用这个基于腾讯云存储 COS 的 WordPress 远程附件支持的插件,可以直接将站点题图等直接替换掉,但是文章内的图没办法更换,因为已经写入数据库了,可以手动更改一下。

基于腾讯云存储 COS 的 WordPress 远程附件插件

这个插件核心功能使用了腾讯云 COS 官方 SDK,当然你不想用插件的话也可以自己集成一下

该插件实现以下功能:

使用腾讯云对象存储服务存储 wordpress 站点图片等多媒体文件

可配置是否保留本地备份和是否上传缩略图

支持配置图片等存储地址,并可支持腾讯云 COS 绑定的个性域名(需已备案)

支持一键同步资源到腾讯 COS

安装

直接下载源码包。从 Github 上或者码云上直接下载打包源码,通过 WordPress 后台上传安装,或者直接将源码包上传到 WordPress 插件目录wp-content\plugins,然后在后台启用。

Github 项目地址:传送门

码云项目地址:传送门

这个插件有点问题,项目是 2015 年上传的,作者后期好像没有维护了,这里更新了一下

百度网盘:传送门,Github 项目地址:Github

配置插件

插件配置图一
插件配置图一
插件配置图二
插件配置图二

这些参数以及腾讯云存储桶如何创建就不说了,自己看一下官方文档吧。插件该注意的地方,插件设置的页面也都有说。

如果网站是 HTTP 的,需要把/wordpress-qcloud-cos-master/sdk/Qcloudcos 目录下的 conf.php 文件中的https://region.file.myqcloud.com/files/v2/改为http://region.file.myqcloud.com/files/v2/

修复 BUG

第一个:

之前也说了,文章内的图片插件不会自动替换,需要手动更改一下,我们直接打开数据库 spl 执行以下命令,看到影响了*行 说明执行成功

执行成功
执行成功

第二个:

当替换完了以后,查看控制台会报错,

跨域问题
跨域问题

提示跨域之类的错误No 'Access-Control-Allow-Origin' header is present on the requested resource.原因是没有添加 header 头之类的东西,解决方法:

在你的腾讯 COS 源的 CDN 中添加 HTTP Header 配置,

Access-Control-Allow-Origin:*

在你的存储桶的基础设置中设置跨域访问 CORS,配置如下

跨域访问 CORS 设置
跨域访问 CORS 设置

就可以去除这个报错信息了。


有人用不了这个插件是因为函数命名的问题,别问了,自己去我 Github 上打包下载一份,项目地址:Github,如果对你有用,请留下一个 star

94 条评论

发表评论

*

  • 发现服务器时间出问题(后台显示UTC时间的地方实际上是北京时间,造成发布的文章都是8小时前)。然后全部禁用插件再启用发现问题来自本插件,能否检查一下问题 😥

    • @Hanada 昂,这个问题github上有人提过,这个需要改一下插件中的配置。详细的可以查看https://github.com/sy-records/wordpress-qcloud-cos/issues/2#issuecomment-437644895

  • 现在腾讯云COS免费是不是只有6个月,怎么查看啊

  • 能不能出个教程,为什么配置不成功,配置完成后所有图片不加载

  • 腾讯云不启用CDN,只用COS,可以么?我同步后,显示同步数据成功,但是,没有上传到COS中,博文图片全部打不开。再次将插件内的目录留空。博文图片可以打开。插件内不填任何信息,仍然显示同步数据成功。是不是不匹配V5的COS,所以不能使用成功?

      • @沈唁 我启用的WPSUPERCACHE、WPJAM、COS插件,WPJAM中禁用XML-RPC,不知道和这个有没有关系,我用腾讯云主帐号建立的存储桶,云API的KEY,然后在WP后台填写好之后,点击的更新,然后点击的同步,但是,我用的是香港的COS节点,COS的地域选的是华南,这样是不是不行?

        • @complexray 插件冲突可能会有,没测试过。地区还是选一样的好。配置没问题开个回源试试吧

      • @沈唁 回源是要从哪里开呢?这个没有做过。
        我的服务器是在香港节点,我可以对象存储选内地吗?会不会有延迟,或者流量计费上不算成是内网什么的?

  • 配置以后发现了一些问题,不上传缩略图和不在本地保留备份,想要生成缩略图的话必须不勾选不在本地保留备份;在数据库里删除图片并不会同步从cos里删除(虽然我希望的就是不同步删除……不过其他人可能需要同步);另外博主,勾选不在本地保留备份后本地图片文件会删除,但是数据库里依然有数据,我用的腾讯云临时域名测试的,数据库里的数据不显示图片内容,而是全部用那种文章标识替代了,这个是神马情况。

    • @宅 缩略图是wp切割的,可能要点一下同步。在数据库删除图片?我都是在wp后台的媒体删除。不保留本地肯定不会有,已经写入数据库的图片地址,本地的删了,找不到图片肯定404