Question

Je suis coincé sur une évidence:

Comment rendre une image à partir d'un contrôleur en utilisant le jeu 2.0?

Avec le jeu 1.0 il y avait une méthode renderBinary(). Il est maintenant disparu.

Play-RC1 uniquement défini 3 types de contenu: Txt, et Xml .... Html

Par conséquent, comment servir un binaire du contrôleur?

Était-ce utile?

La solution

Scala avec Play 2.x, au lieu d'utiliser renderBinary() ou Binary() juste

Ok(byteArray).as(mimeType)

Dans l'exemple précédent, ce qui donne:

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

Hope this helps.

Autres conseils

Voici une solution 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 est une méthode de Controller, tout comme Ok. Le code source Results.scala suggère qu'il sera supprimé:

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

}

Mais il n'y a aucune suggestion de ce qu'il faut utiliser à la place. Je suppose que l'on pourrait tout simplement créer un objet propre à faire de si nécessaire.

En Java, selon le dernier jeu de code 2.0, Résultats classe contient une méthode état qui peut recevoir un octet [] comme paramètre, qui devrait être utiliser pour votre scénario.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top