feat(api): 修改oss
- 替换开发环境API基础URL为本地服务地址 - 实现签名URL本地缓存机制,解决微信按URL缓存图片导致重复下载问题 - 添加缓存清理功能,包括过期清理和按需删除特定缓存项 - 集成阿里云OSS上传功能,支持直传减少服务器带宽占用 - 优化头像地址处理逻辑,统一使用签名缓存避免地址频繁变化 - 移除过时的OSS上传示例文件oss-upload.js - 更新课程页面实现跳转第三方小程序功能 - 调整打卡记录图片地址获取方式,统一使用新的签名缓存逻辑 - 优化图片上传流程,增加压缩处理和批量上传支持 - 完善认证模块中的缓存清理逻辑,切换账号时清除相关图片缓存 - 添加后端环境变量配置模板和代理文档说明
This commit is contained in:
23
oss_store.py
23
oss_store.py
@@ -64,10 +64,31 @@ def missing_config():
|
||||
|
||||
|
||||
def is_enabled():
|
||||
"""OSS 是否可用。False 时调用方必须退回本地磁盘,不能抛异常。"""
|
||||
"""OSS 是否可用。False 时调用方必须退回「明确失败」,不能抛异常。"""
|
||||
return oss2 is not None and not missing_config()
|
||||
|
||||
|
||||
def unavailable_reason():
|
||||
"""返回「OSS 不可用」的可读原因;可用时返回空串。
|
||||
|
||||
**为什么要单独一个函数**:`is_enabled()` 把两种完全不同的故障揉成同一个 `False` ——
|
||||
|
||||
① **没装 oss2**(`pip install -r requirements.txt` 没在这个 venv 里跑过)
|
||||
② **没配 .env**(部署时 `.env` 没带上 / 被 `git pull` 覆盖 / 值还是占位符)
|
||||
|
||||
而这两种的修法毫无关系:一个是装包,一个是配环境变量。
|
||||
线上表现却**完全一样**(上传 503 + 图片全空白),而且**一句话日志都没有** ——
|
||||
2026-10-09 就因为这个把排查方向带到错的地方去了。
|
||||
所以:启动时把它的返回值打进日志(见 `main.py`),排查时先问它。
|
||||
"""
|
||||
if oss2 is None:
|
||||
return "未安装 oss2(用该 venv 的解释器跑 pip install -r requirements.txt)"
|
||||
missing = missing_config()
|
||||
if missing:
|
||||
return "缺少或仍是占位值的配置项:" + " / ".join(missing)
|
||||
return ""
|
||||
|
||||
|
||||
_buckets = {}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user