表单里有文件也有文本框,提交后文件正常,文本字段全是空。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
<form method='post' enctype='multipart/form-data'> # 异步提交时交给浏览器自动设置 Content-Type
表单编码类型未声明为多部分,服务端按普通表单解析拿不到文件与字段。这一点先确认清楚,后面就不用反复试。
碰到「表单编码类型」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。
具体做法是,声明正确的编码类型;服务端按多部分解析;不要手动设置内容类型边界。
改完照着核一遍,文件与文本字段都能正确接收。