obecnie używam następujących z PLAY2/Scala użyciu narzędzia FileUploader JavaScript, żeby przesłać plik do mojego serwera:Wyciąganie plików z MultipartFormData w pamięci w PLAY2/Scala
def fileUploader = Action(parse.multipartFormData) { request =>
request.body.file("qqfile").map { picture =>
import java.io.File
val filename = picture.filename
val contentType = picture.contentType
picture.ref.moveTo(new File("/tmp",filename))
Ok(Json.toJson(Map("success" -> "true")))
}.getOrElse {
Ok(Json.toJson(Map("error" -> "error occured")))
}
}
mam do czynienia jedynie z małe pliki (< 10MB) i chcę użyć Casbah do zapisania tych plików bezpośrednio w Mongo Document lub GridFS za pomocą sterowników Mongo. Zdaję sobie sprawę, że mogłem po prostu odczytać zapisany plik z dysku, ale czy istnieje sposób na obsłużenie tego wszystkiego z pamięci bez buforowania pliku na dysku?
Dokumentacja odtwarzania tutaj zaleca napisanie niestandardowego BodyParser (http://www.playframework.com/documentation/2.1.0/ScalaFileUpload), ale nie wydaje się, aby istniała jakakolwiek dokumentacja, jak go napisać. Nie było jasne, jak interfejs API/implementacja działała od Scaladoców. Próbowałem patrząc na kodzie źródłowym MultiPartFormData, aby zobaczyć jak to działa, ale nie może wydawać się znaleźć w ich Git repo:
https://github.com/playframework/Play20/tree/master/framework/src/play/src/main/scala/play/api/mvc
Rozglądałem się trochę, ale nie może wydawać znaleźć dobry przykład.
Opcja 'multipartFormData' parser ciało można znaleźć tutaj: https://github.com/playframework/Play20/blob/2.1.0/framework/ src/play/src/main/scala/play/api/mvc/ContentTypes.scala # L541 – EECOLOR