摘要:官网询价在上传图纸后无法提交,常见原因位于浏览器校验、服务器上限、临时存储或程序处理。本文按状态码、文件特征和后台结果逐层定位。
官网询价时能填写型号和数量,上传图纸后一提交就失败,排查重点不是先删掉附件功能,而是确认失败发生在浏览器校验、Web服务器、应用程序还是邮件转发环节。先记录文件大小、扩展名、实际类型、提交时间和响应状态,再按请求经过的顺序检查,才能避免客户反复压缩文件仍然无法送达。

用状态码和文件特征定位失败位置
让测试人员准备三个受控文件:空白的 drawing-test.pdf、同内容压缩后的 drawing-small.pdf,以及不带附件的询价记录。填写相同的 Name、Email、Product Model 和 Quantity,逐次提交并记录浏览器开发工具中的请求状态。无附件成功、大附件失败,范围便可收窄到大小限制、传输超时或临时存储;所有附件都失败,则要继续查字段名称、目录权限和程序处理逻辑。
HTTP 413 通常表示请求体超过接收上限。Nginx 的 client_max_body_size、PHP 的 upload_max_filesize 与 post_max_size、应用自身的 Attachment Limit 必须一起核对,实际可用上限取其中较小者。字段示例若声明最大 10 MB,服务器却只接受 2 MB,页面提示就是错误承诺。修改限制后要清理相关缓存并重新加载配置,不能只改前端文字。
状态为 200 也不等于附件已经保存。响应正文可能包含业务错误,页面脚本却没有显示;程序也可能先生成询价编号,再因临时目录不可写而丢失文件。验收记录至少保存 Request ID、HTTP Status、Application Code、Stored Filename 和 Storage Result。若回执写“提交成功”,后台记录中必须能看到同一个 Request ID 和附件状态,不能只确认邮件通知已发出。
扩展名与实际 MIME 类型要同时判断。客户把 STEP 图纸改名为 quote.pdf,并不会让文件变成 PDF;浏览器上报的类型也可能为空。允许清单应来自业务需要,例如 pdf、step、stp、dxf、dwg、jpg、png,而不是放开任意格式。服务端应重新识别类型、生成不可执行的存储名,并把客户原文件名作为显示字段保留,不能直接用原名称覆盖服务器文件。
把限制说明、失败回退和后台交接一起验收
上传控件旁要提前写清允许格式、单文件上限、文件数量和是否接受压缩包。提示应在选择文件后立即显示具体原因,例如“文件为 12.4 MB,当前上限为 10 MB”,不要等客户填完全部字段才返回“提交失败”。错误后 Name、Email、型号和备注应继续保留,附件可要求重新选择,但不能清空整张询价记录。
还要检查超时和弱网场景。上传进度停在中途时,提交按钮应保持明确状态,避免客户连续点击形成多条重复记录。服务端以 Request ID 做幂等判断:同一编号再次到达时更新附件状态,不重复创建线索。若连接中断,页面应给出重新上传入口,并提供可复制的邮箱地址作为回退,但不要把客户本地文件路径写入日志或通知邮件。
后台交接要区分 Uploaded、Scanning、Available、Rejected 和 Missing。销售只能在 Available 时下载;Rejected 要带拒绝原因,Missing 表示表单记录已生成但文件未落盘。对于 CAD 文件,可先进入隔离目录完成安全检查,再转入受控存储。公开目录不应允许脚本执行,下载响应应使用附件方式,并检查未登录用户是否能通过猜测路径访问其他客户文件。
发布前用桌面和约 390px 宽的手机视口各做一次真实提交,分别覆盖无附件、合法小文件、超限文件和不允许类型。核对错误提示不遮挡按钮,长文件名能换行,进度状态不会撑宽页面。再从后台打开成功记录,确认原文件名、保存文件名、大小、类型、提交来源和负责人完整对应;邮件只作为通知,正式交接状态仍以后台记录为准。
上线后若再次收到“图纸传不上去”,应让客户提供发生时间、文件格式和大小,不要求对方发送浏览器隐私数据。运维按时间查访问日志与应用日志,再用 Request ID 对照存储结果,并保留复测时间。这样可以判断是上限变化、磁盘空间、权限、超时还是格式拒绝,也能在不扩大文件访问范围的前提下恢复询价入口。



