Domanda

Sono bloccato su un'ovvia:

Come per il rendering di un'immagine da un controller tramite la riproduzione 2.0?

Con il gioco 1.0 c'era un metodo renderBinary(). E 'ormai andato.

Play-RC1 definito solo 3 tipi di contenuto: TXT, HTML e XML ....

Pertanto, come servire un binario dal controller?

È stato utile?

Soluzione

In Scala con Play 2.x, invece di renderBinary() o l'uso Binary() juste

Ok(byteArray).as(mimeType)

Nell'esempio precedente, questo dà:

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

Spero che questo aiuti.

Altri suggerimenti

Ecco una soluzione 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 è un metodo di Controller, proprio come Ok. Il codice sorgente in Results.scala suggerisce che sarà cancellato:

/** 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)

}

Ma non v'è alcuna indicazione di ciò che da usare al posto. Suppongo che si potrebbe semplicemente creare il proprio oggetto per fare questo, se necessario.

In Java, come da ultimo codice Giocare con 2.0, Risultati classe contiene un metodo stato che può ricevere un byte [] come parametro, che dovrebbe essere di utilizzare per lo scenario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top