クライアント側からサーバーにアップロードする必要のあるExcelファイル(サイズ範囲は0〜100MB)があれば、解析されます。 Akka-Httpでそれを行うには?私はdocを読んで、彼らはjsonとcsv形式しかサポートしていないようです。Akka httpファイルを読み込んで解析してexcelファイルをアップロードする
さらに、サーバー側から見ると、ファイルをアップロードした後にのみ解析する必要がありますか、アップロードのプロセス中に利用可能な限り1つのデータエントリを解析できますか?
クライアント側からサーバーにアップロードする必要のあるExcelファイル(サイズ範囲は0〜100MB)があれば、解析されます。 Akka-Httpでそれを行うには?私はdocを読んで、彼らはjsonとcsv形式しかサポートしていないようです。Akka httpファイルを読み込んで解析してexcelファイルをアップロードする
さらに、サーバー側から見ると、ファイルをアップロードした後にのみ解析する必要がありますか、アップロードのプロセス中に利用可能な限り1つのデータエントリを解析できますか?
他のファイルタイプではなく、Excelファイルに関して特別なものは何もありません。
すでにファイルと要求を取得するために応答するためのディレクティブが存在する
ファイルのディレクティブ:
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`)
手動作成を
あなたがのSource
を作成するためにfile ioを使用することができますChunkStreamPart
としてファイルを変換:
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を作成するために使用することができます。
その後、HttpResponse
のエンティティとすることができ
import akka.http.scaladsl.model.HttpEntity
val entity :() => HttpEntity =
() => HttpEntity(ContentTypes.`application/octet-stream`, fileSource())
:
import akka.http.scaladsl.model.HttpResponse
val excelResponse :() => HttpResponse =
() => HttpResponse(entity = entity())
この応答は、標準の一部にすることができますroute:
val route =
get {
path(/ "excelFile") {
complete(excelResponse())
}
}
'HttpEntity.apply'を直接使用することもできます。これは' ChunkStreamPart.apply'を経由するよりも少しシンプルです。 – jrudolph
@jrudolph提案していただきありがとうございます。編集されました。 –
これにはソースファイルとは別にExcelと関係がありますか? –
@MarkFitzgerald、私は(Apache POIを使って)サーバー側で受信した後にコンテンツを解析する必要があります。私が自信を持っていないのは、Akka-Httpを使用しているときにバイトストリームの転送を処理するプロセスです。 – Bin
Akka-HttpまたはScalaの知識のないExcelユーザーがこの質問にどのように答えてくれますか? –