Ich schreibe eine Play 2.0 Java-Anwendung, mit der Benutzer Dateien hochladen können. Diese Dateien auf einem Drittdienst gespeichert werden ich eine Java-Bibliothek zugreifen, wobei das Verfahren I in dieser API verwenden, hat die folgende Signatur:Hochladen von Datei als Stream in Play Framework 2.0
void store(InputStream stream, String path, String contentType)
Ich habe es geschafft, Uploads, um die Arbeit der folgenden einfachen Controller:
public static Result uploadFile(String path) {
MultipartFormData body = request().body().asMultipartFormData();
FilePart filePart = body.getFile("files[]");
InputStream is = new FileInputStream(filePart.getFile())
myApi.store(is,path,filePart.getContentType());
return ok();
}
Meine Sorge ist, dass diese Lösung, weil standardmäßig nicht effizient ist das Spiel Rahmen speichert alle vom Kunden in einer temporären Datei auf dem Server hochgeladen Daten dann meinen upload Anrufe() -Methode in der Steuerung.
In einem traditionellen Servlet-Anwendung würde ich auf diese Weise ein Servlet geschrieben haben, verhalten:
myApi.store(request.getInputStream(), ...)
Ich habe überall gesucht, und keine Lösung gefunden hat. Das nächste Beispiel, das ich gefunden habe, ist Why makes calling error or done in a BodyParser's Iteratee the request hang in Play Framework 2.0?, aber ich habe nicht herausgefunden, wie ich es an meine Bedürfnisse anpassen kann.
Gibt es einen Weg in play2, um dieses Verhalten zu erreichen, d. H., Die vom Client hochgeladenen Daten sollen direkt durch die Web-Anwendung auf ein anderes System übertragen werden?
Danke.
Gibt es das in Java statt in Scala? :( – by0