https://kotlinlang.org logo
#ktor
Title
# ktor
a

Ali Khaleqi Yekta

08/04/2021, 11:53 AM
Hi. Is there a way to measure the transferred size of a static file at the end of the request? For example, we have a 2GB static file. A user requests to get the file but cancels it when it's 25% completed. How to get the size which is 512MB?
a

Aleksei Tirman [JB]

08/04/2021, 12:34 PM
Here is an example where total bytes is printed when downloading of a file is canceled by the client:
Copy code
val file = File("/path/to/file")
val channel = file.readChannel()

embeddedServer(Netty, port = 7070) {
    routing {
        get("/") {
            try {
                val content = object : OutgoingContent.ReadChannelContent() {
                    override fun readFrom(): ByteReadChannel = channel
                    override val contentType: ContentType = ContentType.defaultForFile(file)
                }

                call.respond(content)
            } catch (e: ChannelWriteException) {
                println(channel.totalBytesRead)
            }
        }
    }
}.start(wait = true)
👍 1
2 Views