#scalatra
#scalatra
Вопрос:
Я использую scalatra-sbt-prototype. Что мне нужно изменить и где, чтобы иметь возможность обслуживать файлы из каталога в моей файловой системе? Скажем, например, я хотел бы отправить файл first.tar.gz
из /home/downloads/first.tar.gz
и сделать его доступным как:
http://localhost:8080/first.tar.gz
Ответ №1:
Для корректности вы также можете задать ContentType, чтобы браузер не пытался отобразить его в виде текста / html, если у вас это задано в фильтре before и заголовке disposal с правильным именем. Большинство браузеров выводят имя файла из 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
}
Очевидно, что маршрут очень статичен, но будет делать то, что вы хотите.
Комментарии:
1. Я думал, что, возможно, обработчик угадает mimetype?
2. @Geo К сожалению, на данный момент это не так. Только что протестирован с
curl --head
.
Ответ №2:
Возврат java.io.File
в браузер из действия, похоже, достигает этого.