0
ファイルを受信したアクタにコントローラからファイルを送信し、メタデータを抽出します。akkaと再生の間のファイル処理
import app.model.Bill
import com.google.common.io.Files
import play.api.libs.Files.TemporaryFile
import play.api.mvc.MultipartFormData
import play.core.parsers.Multipart.FilePartHandler
//model
case class UploadFile(billFile: MultipartFormData.Part[Files.TemporaryFile])
//Controller
val fileUploadActor = ActorSystem().actorOf(Props[FileUploaderActor])
def uploadBillFile = Action(parse.multipartFormData){ implicit request =>
request.body.file("billFile").map {billFile =>
val stats = fileUploadActor ! UploadFile(billFile)
}
// Actor
class FileUploaderActor extends Actor{
override def receive: Receive = {
case UploadFile(billFile : FilePartHandler[TemporaryFile]):
val filename = billFile.filename
println("filename :" + filename)
/* implementation goes like this */
}
}
私の問題は、「MultipartFormData.Partは[Files.TemporaryFile]」俳優にファイルを渡すケースクラス「UploadFile」で解決されていないタイプです。
この問題を解決するには、事前にお申し出ください。
これは、このロジックを俳優に分ける良い考えではないと私は本当に思っています。本当にこれは本当に必要ですか?この論理分離の目的は何ですか? – Pavel
はい、このファイルのアップロードを非同期で非ブロックにします。 – Akan
なので、これは非同期コントローラメソッドで行う必要がありますか? – Pavel