【发布时间】:2012-08-17 12:21:12
【问题描述】:
我正在编写一个允许用户上传文件的 play 2.0 java 应用程序。这些文件存储在我使用 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() 方法。
在传统的 servlet 应用程序中,我会编写一个这样的 servlet:
myApi.store(request.getInputStream(), ...)
我一直在到处寻找,但没有找到任何解决方案。我找到的最接近的例子是Why makes calling error or done in a BodyParser's Iteratee the request hang in Play Framework 2.0?,但我没有找到如何修改它以满足我的需要。
play2 中有没有办法实现这种行为,即让客户端上传的数据直接“通过”网络应用程序到另一个系统?
谢谢。
【问题讨论】:
标签: java upload stream playframework-2.0