我有以下使用多部分文件上传的片段。其中一部分读取字节,另一部分读取字符串。读作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">