Для правильности вы также можете установить contentType, чтобы браузер не пытался отображать его как text / html, если он установлен в вашем фильтре before и заголовке расположения с правильным именем.Большинство браузеров выводят имя файла по URL, но, чтобы быть уверенным, вы можете установить его явно.
get("/first.tar.gz") {
contentType = "application/octet-stream"
val file = new java.io.File("/home/downloads/first.tar.gz")
response.setHeader("Content-Disposition", "attachment; filename=" + file.getName)
file
}
Очевидно, что маршрут очень статичен, но будет делать то, что вы хотите.