Dưới đây là một giải pháp 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
là một phương pháp Controller
, giống như Ok
. Mã nguồn trong Results.scala
đề xuất mã sẽ bị xóa:
/** 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)
}
Nhưng không có đề xuất về việc nên sử dụng thay thế. Tôi cho rằng người ta có thể đơn giản tạo ra một vật thể riêng để làm điều này nếu cần thiết.
Cảm ơn, mặc dù tôi khuyên bạn nên di chuyển thực tế truy cập tệp vào mô hình. – DavidG