writeTo

abstract fun writeTo(channel: (CoroutineScope, ByteWriteChannel) -> Job)

设置用于 流式写出请求体 的回调函数。

当 Ktor 引擎准备好发送数据时,会调用这里注册的 channel 回调。 回调内部可通过 ByteWriteChannel 逐块写入大文件或实时数据,避免一次性加载到内存。

使用示例

writeTo { scope, channel ->
scope.launch {
File("big.iso").inputStream().use { fileIn ->
fileIn.copyTo(channel) // 边读边发
}
channel.close() // 写完后必须关闭通道
}
}

注意

  • 回调返回的 Job 代表整个写出任务,必须等待其完成才能确保数据全部发送。

  • 若需设置 Content-TypeContent-Length,请先调用 setContentTypesetContentLength

  • 写入过程中可随时检查 isActive 来响应取消事件。

Parameters

channel

回调函数,参数1为当前协程作用域,参数2为可写出的字节通道。 函数需返回一个 Job,用于跟踪写出任务的生命周期。