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

使用Ktor与KMM上传多图片至服务器遇连接拒绝问题

Ktor + KMM 多文件上传正确实现方式

你当前的代码错误在于将多个文件的字节数组打包成列表一次性append到同一个表单字段,不符合multipart表单的解析规范,这会导致服务器无法正确处理请求,甚至引发连接拒绝。正确的做法是逐个添加每个文件到表单中,每个文件对应一个同名的表单字段(比如attachments[]),同时指定必要的文件头信息。

修正后的代码示例

mainClient.post {
    url("你的上传接口完整地址")
    setBody(
        MultiPartFormDataContent(
            formData {
                // 遍历需要上传的图片列表
                listOf(kmmFile, kmmFile).forEach { kmmFile ->
                    val fileBytes = toBytes(kmmFile)
                    append(
                        "attachments[]",
                        fileBytes,
                        Headers.build {
                            // 指定文件名,服务器可通过这个获取文件名
                            append(HttpHeaders.ContentDisposition, "filename=\"${kmmFile.name}\"")
                            // 根据图片实际类型设置Content-Type,比如png用image/png
                            append(HttpHeaders.ContentType, "image/jpeg")
                        }
                    )
                }
            }
        )
    )
}

额外注意事项

  • 确认服务器端支持接收attachments[]形式的多文件字段:多数后端框架(如Spring Boot、PHP Laravel)会自动将同名的多字段解析为文件列表
  • 检查toBytes方法:确保它能正确读取KMM跨平台文件的完整字节数据,没有出现截断或编码错误
  • 排查网络问题:如果仍然出现连接拒绝,先确认服务器地址、端口正确,服务器处于运行状态,客户端与服务器之间没有防火墙/代理拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:50:16