feat: 头像支持 GIF——跳过裁剪直接上传,原始字节存储保留动画 #11

Open
dsh wants to merge 2 commits from dsh/go_blog:feat/avatar-gif into main
2 Commits
Author SHA1 Message Date
dsh b6264aa555 feat: 头像支持 GIF——跳过裁剪直接上传,原始字节存储保留动画
- 客户端(profile.html):选中 GIF 时不进入裁剪弹窗,直接上传原始文件
  (不做 canvas 转码,保留动画);上传前按 10 MiB 做大小判断(服务端仍
  按平台策略强制校验);把上传+预览+导航头像更新逻辑抽为
  uploadAvatarBytes(blob, filename),裁剪流与 GIF 直传共用
- 服务端(UploadAvatar):GIF(配置 MIME=image/gif,已过白名单/魔数校验)
  跳过 256x256 缩放与 JPEG 重编码,原字节直存,files 行
  ext=.gif / mime=image/gif;其他类型行为不变
- 新增 TestAvatarUploadGifStoredRaw:原始字节一致性/哈希命名/
  files 行元数据/归属者断言
2026-08-28 20:33:40 +08:00
dsh cc49152f1b fix: 更换头像后 header 头像样式异常——只替换头像容器内容
旧逻辑在头像上传成功后把整个 avatarBtn 按钮的 innerHTML 换成单个
<img>:头像圆形容器(w-8 h-8 rounded-full)、用户名 span 全部丢失,
头像失去圆形裁剪与边框、布局错乱,直到刷新后服务端重新渲染才恢复。

- base.html:头像是像圆形容器加 id="headerAvatarWrap"(服务器渲染结构
  不变,仅加标记)
- profile.html:上传成功后仅更新容器内容(img/svg → 新头像),
  保留按钮结构与用户名文本
2026-08-28 20:26:00 +08:00