对象存储配置与附件管理
接入阿里云 OSS 或腾讯云 COS 存放附件,配置跨域、水印与迁移。
一、为什么用对象存储
附件默认保存在站点 upload/ 目录,随站点迁移一起打包,体积大且占用服务器带宽。改用对象存储后,图片、视频等附件由云存储直接提供访问,站点只保留地址,适合图片量大的分类信息站。
二、阿里云 OSS
- 在云平台对象存储中创建 Bucket,读写权限设为「公共读」,其余保持默认;
- 在访问控制中取得 AccessKey ID 与 AccessKey Secret;
- 在 Bucket 列表与「概述」中分别取得存储桶名与地域节点;
- 后台 → 网站设置 → 上传设置,存储方式选择阿里云,填入以上四项。
三、腾讯云 COS
创建存储桶时访问权限选择「公有读私有写」,记下存储桶名与地域;再取 SecretId、SecretKey,一并填入上传设置,存储方式选腾讯云。若水印功能报错,检查是否已开通对应的数据处理能力并绑定该存储桶。
四、跨域设置与海报图片
启用云存储后,若前台海报中的图片不显示,通常是跨域限制导致。在云存储的「数据安全 → 跨域设置」中新增规则:来源填 * 或你的域名,允许方法勾选 GET,并勾选返回 Vary: Origin。保存后海报图片即可正常显示。
五、水印与附件目录
需要在图片上加文字或图片水印时,顺序很重要:先完成存储配置,再重新上传水印图片,让水印文件也落到云存储中,否则加水印会报错。水印图片重新上传后才生效。
六、切换后的检查
切换存储方式前先备份整份 upload/ 目录。切换后逐项验证:
# 备份附件目录,便于回滚
tar czf upload-backup.tar.gz upload/
- 新发布信息的图片地址是否指向存储域名;
- 旧信息中的图片是否仍可访问,必要时把旧文件同步到云存储;
- 后台删除信息时能否同步删除云文件。
云存储的读写权限不要设为「公共读写」,避免附件被任意覆盖或盗传。