Подтвердить что ты не робот

Как визуализировать двоичный файл с воспроизведением 2.0?

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

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

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

Play-RC1 определил только 3 типа контента: Txt, Html и Xml....

Следовательно, как обслуживать двоичный файл с контроллера?

4b9b3361

Ответ 1

В 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")
  }
}

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

Ответ 2

Здесь a 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)

}

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

Ответ 3

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