在我的控制器中,我定义了一个方法上传,该方法上传应该通过我的网站流式传输从用户上传到第三方网站(如Dropbox或Box.com)的文件。我受JavaApi的限制(为此我写了一个包装器)。我必须给它一个java.io.FileInputStream,但我不知道如何。
这是方法:
def upload(parentId: String) = Action.async { implicit request =>
authorized(request, { user =>
val body = request.body.asMultipartFormData
// somehow i have to transform the body from request to a FileInputStream
val stream: FileInputStream = new FileInputStream(file)
ApiJava.pseudoUpload(user.token, parentId, stream);
Redirect(routes.Application.showFolder(parentId))
})
}
请求以标准
发送@helper.form(action = routes.File.pseudoUpload(currentId), 'enctype -> "multipart/form-data") {
<input type="file" name="upoadThis">
<input type="submit">
}
非常感谢您的帮助!
答案 0 :(得分:0)
我这样做:
def upload(parentId: String) = Action.async(parse.multipartFormData) { implicit request =>
authorized(request, { user =>
request.body.file("upoadThis").map { uploadThis =>
new FileInputStream(receivedFile.ref.file)
...
将文件临时存储到磁盘,然后将其流式传输到Dropbox或任何人。
有关详情,请参阅documentation。