Codex文件上传需覆盖真实场景:准备三类本地测试文件,通过CLI直传、@Browser插件和拖拽三种方式上传,分别验证超时控制、系统级交互与IPC通道;再检查upload_id格式、size字节一致性及EXIF元数据解析,确保传输完整性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要验证Codex能否稳定接收并正确处理用户上传的各类文件,需覆盖真实业务中常见的上传路径、格式限制与失败场景,不能只靠模拟接口返回。
准备待测文件与上传环境
在本地新建一个测试文件夹,放入三类文件:【test_upload.jpg】(1.2MB,带EXIF信息)、【report.xlsx】(480KB,含公式与合并单元格)、【empty.txt】(0字节)。不要用系统临时目录或桌面路径,避免权限拦截。
启动Codex CLI并确保已登录有效账号;若使用桌面端,确认「File Upload」插件已启用且未被防火墙拦截端口。
构造不同触发方式的上传请求
方法一:命令行直传
执行 codex upload --file ./test_upload.jpg --tag image-test --timeout 30。注意必须指定 --timeout,否则大文件可能因默认15秒超时而静默失败。
方法二:通过@Browser插件上传
先用@Browser打开你的前端上传页(如 http://localhost:8080/upload),再输入指令:“在‘选择文件’按钮上点击→弹出系统对话框后,上传 ./report.xlsx →等待‘上传成功’提示出现”。Codex会调用系统级文件选择器,这比伪造input.value更贴近真实用户行为。
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
方法三:拖拽式上传(仅桌面端支持)
直接将 empty.txt 拖入Codex聊天窗口任意位置。该操作会绕过HTTP表单逻辑,走的是本地IPC通道,能单独验证底层文件句柄接管能力。
验证上传结果是否符合预期
第一步:检查Codex返回的upload_id是否为16位十六进制字符串,例如 7a3f9c1e4b2d8501。若返回 null 或形如 "err:timeout" 的字符串,说明传输中断未重试。
第二步:用该 upload_id 调用 GET /api/v1/uploads/{id} 接口,核对响应体中的 size 字段是否与原始文件完全一致(精确到字节)。Codex上传过程默认启用分块校验,但若服务端未开启Content-MD5回写,size错位将无法被自动捕获。
第三步:对 test_upload.jpg 执行 codex analyze --id 7a3f9c1e4b2d8501 --task=metadata。观察是否能正确解析出拍摄时间、GPS坐标、相机型号——这验证了文件不仅传上去了,还保留了原始二进制完整性,未被base64转义污染。

















