Piszę aplikację 2.0 java, która umożliwia użytkownikom przesyłanie plików. Pliki te przechowywane są na usługi trzeciej dostęp przy użyciu biblioteki Java, metoda używam w tym API ma następujący podpis:Przesyłanie pliku jako strumienia w strukturze gry 2.0
void store(InputStream stream, String path, String contentType)
udało mi się zrobić przesłane pracy stosując następujący prosty kontroler:
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();
}
moim problemem jest to, że to rozwiązanie nie jest efektywne, ponieważ domyślnie przechowuje się grać ramowe wszystkie dane przesyłane przez klienta w pliku tymczasowym na serwerze następnie wywołuje metodę w kontroler mój uploadFile().
W tradycyjnym zastosowaniu serwletu bym pisemnej aplet zachowuje się w ten sposób:
myApi.store(request.getInputStream(), ...)
Szukałem wszędzie i nie znaleźć żadnego rozwiązania. Najbliższym przykładem jest Why makes calling error or done in a BodyParser's Iteratee the request hang in Play Framework 2.0?, ale nie udało mi się go zmodyfikować tak, aby pasował do moich potrzeb.
Czy istnieje sposób w grze2, aby osiągnąć to zachowanie, tj. Posiadanie danych przesłanych przez klienta, aby przejść "przez" aplikację internetową bezpośrednio do innego systemu?
Dzięki.
Czy jest to mimo to zrobić w Javie zamiast Scala? :( – by0