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

KMP项目中用Ktor上传相机ByteArray报错:缺少请求部件'file'

KMP项目图片上传报错解决

我在KMP项目中从相机获取了ByteArray,尝试上传到服务器时使用了以下代码:

val response = client.post(url) {
    setBody(
        MultiPartFormDataContent(
            formData {
                if (byteArrays != null) {
                    append("image", byteArrays, Headers.build {
                        append(HttpHeaders.ContentType, "image/png")
                        append(HttpHeaders.ContentDisposition, "filename=${name}")
                    })
                }
            },
        )
    )
    onUpload { bytesSentTotal, contentLength ->
        println("Sent $bytesSentTotal bytes from $contentLength")
    }
}

但运行后报错:"缺少必需的请求部分'file'"


问题原因

服务器端要求的表单字段名是file,但代码里使用的字段名是image,字段名不匹配导致服务器无法识别上传的文件。

解决方法

将表单字段名从image改为file即可,同时建议给文件名加上双引号,避免特殊字符引发解析问题:

val response = client.post(url) {
    setBody(
        MultiPartFormDataContent(
            formData {
                if (byteArrays != null) {
                    append("file", byteArrays, Headers.build {
                        append(HttpHeaders.ContentType, "image/png")
                        append(HttpHeaders.ContentDisposition, "filename=\"${name}\"")
                    })
                }
            },
        )
    )
    onUpload { bytesSentTotal, contentLength ->
        println("Sent $bytesSentTotal bytes from $contentLength")
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:17:06