Вопрос

Я застрял на очевидном:

Как отображать изображение от контроллера с помощью Play 2.0?

С пьесой 1.0 был renderBinary() метод Теперь это ушло.

Play-RC1 определил только 3 типа контента: TXT, HTML и XML ....

Следовательно, Как обслуживать бинар от контроллера?

Это было полезно?

Решение

В Scala с Play 2.x, вместо renderBinary() или же Binary() Использование Juste

Ok(byteArray).as(mimeType)

В предыдущем примере это дает:

import play.api._
import play.api.Play.current
import play.api.mvc._

object Application extends Controller {

  def index = Action {
    val app = Play.application
    var file = Play.application.getFile("pics/pic.jpg")
    val source = scala.io.Source.fromFile(file)(scala.io.Codec.ISO8859)
    val byteArray = source.map(_.toByte).toArray
    source.close()

    Ok(byteArray).as("image/jpeg")
  }
}

Надеюсь это поможет.

Другие советы

Вот решение Scala:

package controllers

import play.api._
import play.api.Play.current
import play.api.mvc._

object Application extends Controller {

  def index = Action {
    val app = Play.application
    var file = Play.application.getFile("pics/pic.jpg")
    val source = scala.io.Source.fromFile(file)(scala.io.Codec.ISO8859)
    val byteArray = source.map(_.toByte).toArray
    source.close()

    Binary(byteArray, None, "image/jpeg");
  }
}

Binary это метод Controller, как Ok. Анкет Исходный код в Results.scala предполагает, что это будет удалено:

/** To be deleted... */
def Binary(data: Array[Byte], length: Option[Long] = None, contentType: String = "application/octet-stream") = {

  val e = Enumerator(data)

  SimpleResult[Array[Byte]](header = ResponseHeader(
    OK,
    Map(CONTENT_TYPE -> contentType) ++ length.map(length =>
      Map(CONTENT_LENGTH -> (length.toString))).getOrElse(Map.empty)),
    body = e)

}

Но нет никаких предположений о том, что использовать вместо этого. Я полагаю, что можно просто создать собственный объект, чтобы сделать это, если это необходимо.

В Java, согласно последнему коду Play 2.0, Полученные результаты Класс содержит метод статус который может получить байт[ как параметр, который должен быть полезен для вашего сценария.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top