Я пишу приложение java 2.0 для игры, которое позволяет пользователям загружать файлы. Эти файлы хранятся в сторонней службе, к которой я обращаюсь, используя библиотеку Java, метод, который я использую в этом API, имеет следующую подпись:
void store(InputStream stream, String path, String contentType)
Мне удалось настроить загрузку с помощью следующего простого контроллера:
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();
}
Я обеспокоен тем, что это решение неэффективно, потому что по умолчанию платформа воспроизведения хранит все данные, загруженные клиентом во временном файле на сервере, а затем вызывает мой метод uploadFile() в контроллере.
В традиционном приложении сервлета я написал бы сервлет, ведущий таким образом:
myApi.store(request.getInputStream(), ...)
Я искал везде и не нашел решения. Самый близкий пример, который я нашел, - Почему возникает ошибка звонка или выполняется в Iteratee BodyParser, этот запрос зависает в Play Framework 2.0?, но я не нашел, как его изменить мои потребности.
Есть ли способ в play2 для достижения такого поведения, то есть когда данные, загруженные клиентом, "проходят" через веб-приложение напрямую в другую систему?
Спасибо.