如何从spray.io提供Array [Byte]

时间:2014-01-26 15:09:06

标签: spray

我在喷雾罐服务器中使用以下路径(使用喷雾1.2):

path("my"/"path"){
  get{
    complete{
      val buf:Array[Byte] = functionReturningArrayofByte()
      println(buf.length)
      buf
    }
  }
}

缓冲区的长度(以及上面代码打印的内容)是2,263,503字节。但是,从Web浏览器访问my/path时,它会下载一个长度为10,528,063字节的文件。

我认为当使用Array[Byte]完成时,spray会自动将内容类型设置为application / octet-stream,以及内容长度。我没有意识到我可能做错了什么。

修改

我运行了一个小测试,并且已经看到字节数组作为String输出。因此,例如,如果我有两个字节,例如0xFF和0x01,则输出(而不仅仅是两个字节)将是字符串[ 255, 1 ]。我只是不知道如何输出原始内容而不是它的字符串表示。

1 个答案:

答案 0 :(得分:5)

buf包装为HttpData可以解决问题:

path("my"/"path"){
  get{
    complete{
      val buf:Array[Byte] = functionReturningArrayofByte()
      HttpData(buf)
    }
  }
}