feat: banner docker RBD

This commit is contained in:
2026-06-18 14:27:38 +08:00
parent 89ab844343
commit d92efed6ae
3 changed files with 10 additions and 6 deletions
+5 -3
View File
@@ -102,16 +102,18 @@ class CmsInstitutionViewSet(viewsets.ModelViewSet):
if ext not in ALLOWED_BANNER_EXT:
raise AppError('CMS_BANNER_BAD_TYPE', '仅支持 png/jpg/jpeg/webp 图片', status_code=400)
rel_dir = 'institutions'
# 上传图片落在 static/uploads/ 下——该目录由 Docker 持久卷挂载(容器重启不丢),
# 与镜像内置静态(如 institutions/default_hospital.png)分开,避免被卷覆盖。
rel_dir = 'uploads/institutions'
base_static = settings.STATICFILES_DIRS[0]
target_dir = os.path.join(base_static, rel_dir)
target_dir = os.path.join(base_static, 'uploads', 'institutions')
os.makedirs(target_dir, exist_ok=True)
filename = f'inst_{inst.id}_banner{ext}'
with open(os.path.join(target_dir, filename), 'wb') as fh:
for chunk in file.chunks():
fh.write(chunk)
inst.banner_url = f'{rel_dir}/{filename}'
inst.banner_url = f'{rel_dir}/{filename}' # 例:uploads/institutions/inst_17_banner.png
inst.save(update_fields=['banner_url', 'updated_at'])
serializer = self.get_serializer(inst)