Play 2.0でバイナリをレンダリングする方法は?
-
25-10-2019 - |
質問
私は明らかなものにとどまっています:
Play 2.0を使用してコントローラーから画像をレンダリングする方法は?
プレイ1.0にはaがありました renderBinary()
方法。今はなくなっています。
Play-RC1は、TXT、HTML、XMLの3つのコンテンツタイプのみを定義しました。
したがって、 コントローラーからバイナリを提供する方法は?
解決
Scalaでは、2.xではなく2.xをプレイします renderBinary()
また Binary()
Just Use
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コードに従って、 結果 クラスにはメソッドが含まれています 状態 受信できます バイト[ パラメーターとして、シナリオに使用する必要があります。
所属していません StackOverflow