s = raw.split(',')[-1].strip().replace('\n', '')
s += '=' * (-len(s) % 4)
data = base64.b64decode(s)
解析前端传来的图片数据时报长度非法,去掉前缀后仍然失败。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,Base64 字符串长度不是四的倍数,或混入了换行与空格,也可能是 URL 安全变体与标准字母表不通用。
「Base64 解码失败」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
处理上按这个顺序:解码前清理空白并补齐等号;确认是否含 data URI 前缀;按标准字母表解码。
改完只确认一件事:图片数据能正常解码并保存,文件可打开。