首页 > 解决方案 > ktor 客户端发布多部分/表单数据

问题描述

如何将文件发布为 multipart/form-data 使用 ktor 客户端?我想将它用于电报机器人 API“发送文档”。我需要达到与 curl 命令相同的结果

curl -F document=@"path/to/some.file" https://api.telegram.org/bot<token>/sendDocument?chat_id=<chat_id>

标签: kotlintelegramktor

解决方案


您可以使用submitFormWithBinaryData方法发送mutlipart/form-data 请求。这是一个解决方案:

val client = HttpClient(Apache) {}

val file = File("path/to/some.file")
val chatId = "123"

client.submitFormWithBinaryData(
    url = "https://api.telegram.org/bot<token>/sendDocument?chat_id=$chatId",
    formData = formData {
        append("document", file.readBytes(), Headers.build {
            append(HttpHeaders.ContentDisposition, "filename=${file.name}")
        })
    }
)

推荐阅读