2015-12-04 7 views
3

У меня есть файл abc.txt в папке ресурсов моего ресурса src/main/resources. У меня есть следующий фрагмент кода, который должен обслуживать файл.вернуть файл из src/main/resources с помощью akka-http

get { 
    path("hello") { 
     complete { 
     val s = Source.file(new File("src/main/resources/abc.txt"), 1024) 
     s 
     } 
    } 

Я даже попробовал следующую

get { 
path("hello") { 
    complete { 
    getFromFile("src/main/resources/abc.txt") 
    } 
} 

В обоих случаях я получаю сообщение об ошибке говорящее

Выражение типа routing.Route не соответствует ожидаемому типу toResponseMarshallable

Мое единственное требование - когда я получаю этот запрос, я должен иметь возможность обслуживать файл. Я сделал google для решения, которого я не смог найти. Примечание: Я новичок Scala/Akka

+0

getFromResource? –

ответ

4

getFromFile является директива, в то время как complete ожидает ответа.

Правильное решение должно быть как:

val route: Route = 
    path("hello") { 
    getFromResource("abc.txt") 
    } 
+0

Это не работает при работе в качестве файла jar. – Newbee

0

Использование getFromFile было очень близким, но оно уже определяет метод HTTP, поэтому вам не нужно делать это самостоятельно. Что-то вроде этого должно работать:

val route: Route = 
    path("hello") { 
    getFromFile("src/main/resources/abc.txt") 
    } 
0

Вы работаете в двух разных мирах здесь. resources легче получить, используя calasspath.

val resourceStream: InputStream = getClass.getResourceAsStream("/"src/main/resources/abc.txt") 
    val data: String = scala.io.Source.fromInputStream(resourceStream).getLine.mkString 
    data