Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Akka http读取和解析上传的excel文件_Scala_Akka Http - Fatal编程技术网

Scala Akka http读取和解析上传的excel文件

Scala Akka http读取和解析上传的excel文件,scala,akka-http,Scala,Akka Http,比方说,如果我有一个excel文件(大小范围从0到100MB),需要从客户端上传到服务器,那么它将被解析。如何使用Akka Http实现这一点?我看了,他们似乎只支持json和csv格式 此外,从服务器端的角度来看,我是否必须在上传文件后才对其进行解析,或者我可以一次解析一个数据条目,只要它在上传过程中可用?excel文件与任何其他文件类型相比没有什么特殊之处 文件指令 已存在使用文件响应get请求的指令: import akka.http.scaladsl.server.Directives.

比方说,如果我有一个excel文件(大小范围从0到100MB),需要从客户端上传到服务器,那么它将被解析。如何使用Akka Http实现这一点?我看了,他们似乎只支持json和csv格式


此外,从服务器端的角度来看,我是否必须在上传文件后才对其进行解析,或者我可以一次解析一个数据条目,只要它在上传过程中可用?

excel文件与任何其他文件类型相比没有什么特殊之处

文件指令

已存在使用文件响应get请求的指令:

import akka.http.scaladsl.server.Directives._
import java.io.File
import akka.http.scaladsl.model.ContentTypes

val easyRoute : Route = 
  getFromFile(File("/path/to/excelFile.xls"),
              ContentTypes.`application/octet-stream`)
手动创建

您可以使用创建excel文件的
,作为
块流部分

import akka.stream.scaladsl._
import akka.http.scaladsl.model.HttpEntity.ChunkStreamPart

val excelFile = Paths get "example.xls"

val fileChunkSource : () => Source[ChunkStreamPart, _] = 
  () => FileIO fromPath excelFile 
然后可以使用此文件源创建HttpEntity:

import akka.http.scaladsl.model.HttpEntity

val entity : () => HttpEntity = 
  () => HttpEntity(ContentTypes.`application/octet-stream`, fileSource())
然后可以是
HttpResponse
的实体:

import akka.http.scaladsl.model.HttpResponse

val excelResponse : () => HttpResponse = 
  () => HttpResponse(entity = entity())
此响应可以是标准的一部分:


与任何其他文件类型相比,excel文件没有什么特殊之处

文件指令

已存在使用文件响应get请求的指令:

import akka.http.scaladsl.server.Directives._
import java.io.File
import akka.http.scaladsl.model.ContentTypes

val easyRoute : Route = 
  getFromFile(File("/path/to/excelFile.xls"),
              ContentTypes.`application/octet-stream`)
手动创建

您可以使用创建excel文件的
,作为
块流部分

import akka.stream.scaladsl._
import akka.http.scaladsl.model.HttpEntity.ChunkStreamPart

val excelFile = Paths get "example.xls"

val fileChunkSource : () => Source[ChunkStreamPart, _] = 
  () => FileIO fromPath excelFile 
然后可以使用此文件源创建HttpEntity:

import akka.http.scaladsl.model.HttpEntity

val entity : () => HttpEntity = 
  () => HttpEntity(ContentTypes.`application/octet-stream`, fileSource())
然后可以是
HttpResponse
的实体:

import akka.http.scaladsl.model.HttpResponse

val excelResponse : () => HttpResponse = 
  () => HttpResponse(entity = entity())
此响应可以是标准的一部分:


您还可以使用
HttpEntity.apply
直接应用,这比使用
ChunkStreamPart.apply
稍微简单。您还可以使用
HttpEntity.apply
直接应用,这比使用
ChunkStreamPart.apply稍微简单。这与Excel有什么关系,除了它是源代码之外file?@MarkFitzgerald,我需要在服务器端接收后解析内容(使用Apache POI)。我不确定的是使用Akka-Http时处理字节流传输的过程。一个不了解Akka Http或Scala的Excel用户如何回答这个问题?这与Excel除了作为源文件之外还有什么关系?@MarkFitzgerald,我需要在服务器端接收后解析内容(使用Apache POI)。我不确定的是使用Akka-Http时处理字节流传输的过程。一个不了解Akka Http或Scala的Excel用户如何回答这个问题?