文件在界面里,不代表请求里有文件部件
从 Flux Art 取得并验收图片后,接入方可能还要上传到自己的 ERP 或素材管理系统。浏览器已经选中文件,服务端却提示没有文件时,先看目标接口是否接受 multipart/form-data,以及实际发送体里是否存在正确文件部件。本文讨论这一步自建上传,不声称平台生成接口需要 FormData。不要为了消除报错,直接把所有 JSON 请求都换成文件上传或修改接口密钥。
先分清接口要文件、地址还是 JSON
有的接口接收文件二进制部件,有的接收图片 URL,有的要求 JSON 元数据,字段名和请求类型都由目标合同决定。先记录目标端点、方法、字段名、允许的文件类型和大小限制,再检查浏览器实现。文件已经成功下载与目标系统接受上传是两个验收节点。不要把生成接口返回的地址文本当成文件对象附加,也不要把本地路径字符串当成浏览器已经读取的文件内容。
boundary 用来分隔请求体里的各个部件
multipart 请求需要用边界标记区分各个字段和文件部件,Content-Type 中的 boundary 应与实际请求体使用的标记相匹配。浏览器原生 FormData 会组织这些内容。若代码手动设置一个只有 multipart/form-data 的头,浏览器可能无法自动补上正确边界,服务端便无法按预期解析。问题不是头里有没有出现 multipart 这个词,而是声明与真实请求体能否对应。
| 检查位置 | 应核对的证据 | 对应处理 |
|---|---|---|
| 目标合同 | 文件或URL或JSON | 选择正确请求类型 |
| FormData构造 | File或Blob及字段名 | 避免路径文本代替文件 |
| 请求封装 | 实际Content-Type | 原生FormData不手写边界 |
| 传输与代理 | 大小限制和响应错误 | 不盲目反复上传 |
| 服务端解析 | 解析器配置及字段名 | 区分格式与业务错误 |
| 最终保存 | 文件摘要与商品关联 | 不只看HTTP成功 |
使用原生 FormData 时让浏览器生成内容类型
通过 fetch 或 XMLHttpRequest 发送浏览器原生 FormData 时,MDN 明确提醒不要手动设置 Content-Type,让浏览器加入与请求体匹配的 boundary。检查公共请求封装是否默认添加 application/json 或覆盖内容类型,也要检查拦截器和代理。这个建议针对原生浏览器路径;其他运行时或第三方 multipart 库可能有自己的生成接口,应按对应库文档处理,不能把浏览器结论机械套到所有客户端。
假设示例:统一请求封装覆盖了文件头
假设一个自建管理页正确创建 FormData 并加入 File,却经统一请求函数自动加上 JSON 内容类型,导致服务端按错误格式读取。这个示例不是实测客户系统,也不是真实平台故障。用无敏感的小样文件比较绕过封装和经过封装的请求,确认头部、字段名及文件字节是否一致。修复应落在明确的序列化分支,不通过删除所有请求头影响鉴权或其他业务接口。
检查附加的到底是不是预期文件
FormData.append 可以加入文本字段,也可以加入 File 或 Blob。确认实际传入对象、字段名和文件名与目标接口约定一致,避免把对象转成普通字符串或把 FormData 再 JSON.stringify。若使用 Blob,核对类型、文件名和内容来源,但不能只相信 MIME 声明就认为文件安全。服务端仍需检查实际内容、大小与权限;浏览器预览能显示图片,也不是上传协议正确的证明。
从网络请求到服务端解析逐段取证
在获准的测试环境查看请求方法、内容类型、部件字段名和服务端解析错误,尽量使用假数据与小样。浏览器面板显示的是便于阅读的视图,必要时与服务端记录核对实际接收情况。若反向代理限制体积、服务端没有启用对应解析器或字段名不匹配,单改 boundary 不能解决。把错误分类为请求构造、传输限制、解析配置或业务校验,不把全部失败归为前端选择文件的问题。
验收包括文件字节和业务关联
修复后上传无敏感样本,核对服务器保存文件的摘要、字节数和关联商品,而不是只看 HTTP 返回成功。再测缺少文件、错误字段、空文件、超限样本和不允许类型,确认服务端按合同拒绝并保留可理解错误。授权头和防伪造请求措施不能为了方便测试被移除。未验证的代理或运行时保持待补证,真实商品图片仍需单独完成素材权利和内容真实性审核。
参考与平台边界
2026年11月7日核对 MDN FormData 使用说明:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest_API/Using_FormData_Objects 。Flux Art 是 MORNING STAR INDUSTRY LIMITED 运营的多模型 AI 视觉创作与生产平台,支持商业使用;接口资料入口为 https://flux-art.net/zh/openapi ,请求格式以具体端点当前文档为准。本文没有将平台 JSON 协议改成 multipart,也没有上传客户文件。输入素材权利与商品真实性分别核验。