Play-mini: как вернуть изображение - PullRequest
1 голос
/ 29 марта 2012

Я пытаюсь отправить изображение из приложения play-mini .

object App extends Application {
  def route = {
    case GET(Path("/image")) => Action { request =>
      Ok( Source.fromInputStream(getClass.getResourceAsStream("image.gif")).toArray ).as("image/gif")
    }
  }
}

К сожалению, это не работает :) Я получаю следующую ошибку

 Cannot write an instance of Array[Char] to HTTP response. Try to define a Writeable[Array[Char]]

Ответы [ 2 ]

3 голосов
/ 29 марта 2012

Не знаю о play-mini, но в play20 есть предопределенный Writeable[Array[Byte]], поэтому вам необходимо предоставить Array[Byte] для обработки файлов.Также есть немного документации об обслуживании файлов в play20.

0 голосов
/ 27 ноября 2018

У меня была та же проблема, и я почти неделю ломал голову.Оказалось, что решением, которое работало для меня, был следующий фрагмент кода в моем классе контроллера:

    def getPhoto(name: String)  = Action {
    val strPath = Paths.get(".").toAbsolutePath.toString() + "/public/photos/" + name
    val file1: File = strPath
      .toFile
    val fileContent: Enumerator[Array[Byte]] = Enumerator.fromFile(new java.io.File(file1.path.toString))
    Ok.stream(fileContent).as("image/jpeg")
  }

И маршрут был определен следующим образом:

GET         /photos/:name                                                 controllers.myController.getPhoto(name)

Следовательно, набрав URLрасширение photos отображало фотографию в браузере следующим образом: http://localhost:9000/photos/2018_11_26_131035.jpg

Изображение сохраняется в папке «public / photos» в корневой папке приложения и не обязательно в папке активов.Надеюсь, это кому-нибудь поможет: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...