Scala,http4s,fs2.为什么使用http4s和fs2的fileupload只读取一行,而读取字节则完全读取



我有以下使用多部分文件上传的片段。其中一部分读取字节,另一部分读取字符串。读作Byte的一个显示正确的大小,而读作String的一个只读取一行。我错过了什么?

val routes = HttpRoutes.of[IO] {
case GET -> Root                     => Ok(html.index())
case req @ POST -> Root / "generate" =>
req.decode[Multipart[IO]] { m =>
m.parts.find(_.name == Some("template")) match {
case None               => BadRequest("Missing template file")
case Some(templatePart) => {
val templateByteStream = for {
byte <- templatePart.body
} yield byte
m.parts.find(_.name == Some("data")) match {
case Some(datapart) =>
val dataLineStream = for {
line <- datapart.body.through(utf8.decode)
} yield line
Ok {
for {
templateBytes <- templateByteStream.compile.toList
datalines     <- dataLineStream.compile.toList
templateSize  = templateBytes.size
dataLineCount = datalines.size
} yield s"template size $templateSize && dataline count $dataLineCount"
}
case None => BadRequest("Missing data file")
}
}
}
}
}

解决方案:

因为您将整个数据作为单个字符串读取还想通过(text.lines(

署名:"Luis Miguel Mejía Suárez">

相关内容

  • 没有找到相关文章

最新更新