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

Edu*_*rdo 3 spray

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

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

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

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

编辑

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

Edu*_*rdo 5

包装buf为HttpData解决了这个问题:

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