我想使用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"))
}
答案 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
)