write To
设置用于 流式写出请求体 的回调函数。
当 Ktor 引擎准备好发送数据时,会调用这里注册的 channel 回调。 回调内部可通过 ByteWriteChannel 逐块写入大文件或实时数据,避免一次性加载到内存。
使用示例
writeTo { scope, channel ->
scope.launch {
File("big.iso").inputStream().use { fileIn ->
fileIn.copyTo(channel) // 边读边发
}
channel.close() // 写完后必须关闭通道
}
}Content copied to clipboard
注意
回调返回的 Job 代表整个写出任务,必须等待其完成才能确保数据全部发送。
若需设置
Content-Type或Content-Length,请先调用 setContentType 与 setContentLength。写入过程中可随时检查
isActive来响应取消事件。
Parameters
channel
回调函数,参数1为当前协程作用域,参数2为可写出的字节通道。 函数需返回一个 Job,用于跟踪写出任务的生命周期。