PlayFramework:值不是Array [Byte]的成员

时间:2015-06-23 12:27:43

标签: scala playframework

我想使用Play框架从数据库下载文件。 但是当我使用这段代码时,我收到了这条消息:

  

值不是Array [Byte]的成员

如果我将Ok(bytOfImage.as("image/jpg"))更改为Ok(bytOfImage),那么效果会很好,但我会收到一个名称为secondindex而没有.jpg的文件

这是我的控制人员:

def secondindex(number: Int) = Action {
    var bytOfImage =  Array[Byte](1)

    val conn = DB.getConnection()
    try {

      val stmt = conn.createStatement
      val rs = stmt.executeQuery("SELECT image from images where id = " + number)


       while(rs.next()) {
         var blob = rs.getBlob("image")

         bytOfImage = blob.getBytes(1, blob.length().toInt)
         blob.free()
       }

    } finally   {
      conn.close()   }
      Ok(bytOfImage.as("image/jpg"))
    }

2 个答案:

答案 0 :(得分:0)

您正在错误对象上调用as方法。它应该如下所示:

Ok(bytOfImage).as("image/jpg")

答案 1 :(得分:0)

如果您需要从浏览器下载图片,可以使用方法SimpleResult 并添加标题"Content-Disposition" -> "attachment"

例如,在

上的代码中更改行Ok(bytOfImage.as("image/jpg"))
val enumImg: Enumerator[Array[Byte]] = { Enumerator(bytOfImage) }
SimpleResult (
 header = ResponseHeader(200, Map("Content-Disposition" -> "attachment")),
 body = enumImg
 )