Как сделать бинар с Play 2.0?
-
25-10-2019 - |
Вопрос
Я застрял на очевидном:
Как отображать изображение от контроллера с помощью 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, Полученные результаты Класс содержит метод статус который может получить байт[ как параметр, который должен быть полезен для вашего сценария.