You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OkHttp上传图片时文件附加头尾数据致无法识别的求助

问题原因

你使用MultipartBody.FORM构建请求体,这是多部分表单上传的格式。OkHttp会自动为表单中的文件字段添加Content-Disposition、Content-Type等分隔头信息,这些额外内容会被写入到上传的文件中,导致文件不再是纯二进制的图片数据,因此系统提示“File not supported”。

解决方案

如果服务器期望接收纯图片二进制数据(而非表单格式),直接将文件作为请求体提交即可,无需使用MultipartBody:

// 根据实际图片类型指定MediaType,比如image/jpeg、image/png
RequestBody requestBody = RequestBody.create(file, MediaType.parse("image/jpeg"));

OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build();
Request req = new Request.Builder()
        .url(URL)
        .post(requestBody)
        .addHeader("X-Auth", Auth)
        // 可选:根据服务器要求添加Content-Type头
        .addHeader("Content-Type", "image/jpeg")
        .build(); // 注意修正原代码中的拼写错误:buid() → build()
Response res = client.newCall(req).execute();
补充说明

如果服务器明确要求通过表单字段接收文件,那问题出在服务器端:服务器需要正确解析Multipart请求,提取出文件的二进制数据后再保存,而不是直接存储整个请求体。但根据你描述的上传后文件包含额外头信息的情况,显然服务器是直接存储了请求体内容,因此优先采用上述直接上传二进制的方案。

内容的提问来源于stack exchange,提问作者Nilesh K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:05:25