Javascript 上载的文件仅包含;WebKitFormBoundary“;

Javascript 上载的文件仅包含;WebKitFormBoundary“;,javascript,jquery,scala,playframework,playframework-2.0,Javascript,Jquery,Scala,Playframework,Playframework 2.0,我真的不知道这里发生了什么。每次我尝试上载文件时,该文件包含的内容都是: ----WebKitFormBoundaryJ0uWMNv89fcUsC1t-- 在过去的两天里,我一直在寻找某种解释,但我只是在兜圈子。我不知道为什么会这样 表格: 控制器: 问题发生在Javascript中,而不是Scala中。我没有错误地引用表单元素 var formData = new FormData($('#upload-file')[0]); 但是,我在parse.temporaryFile方面也遇到了问题

我真的不知道这里发生了什么。每次我尝试上载文件时,该文件包含的内容都是:

----WebKitFormBoundaryJ0uWMNv89fcUsC1t--

在过去的两天里,我一直在寻找某种解释,但我只是在兜圈子。我不知道为什么会这样

表格: 控制器:
问题发生在Javascript中,而不是Scala中。我没有错误地引用表单元素

var formData = new FormData($('#upload-file')[0]);
但是,我在
parse.temporaryFile
方面也遇到了问题,并且它没有使用上面的代码正确地存储文件。当我在文本编辑器中检查存储的文件时,我注意到文件的开头仍然有
----WebKitFormBoundaryJ0uWMNv89fcUsC1t--
内容,然后是表单信息,然后是文件字节

为了解决这个问题,我根据使用了默认的多部分表单上传方法,它工作得非常好

def image = Action(parse.multipartFormData)  { request =>
   request.body.file("picture").map { picture =>
      val filename = picture.filename
      picture.ref.moveTo(new File(s"/tmp/picture/$filename"))
      Ok("ok")
   }.getOrElse {
      InternalServerError("file upload error")
   }
}

这对我也有用。我甚至没有考虑过这样做,因为在文档中,他们说在使用Ajax上传时必须使用parse.temporary文件。
def image = Action(parse.temporaryFile) { request =>
   request.body.moveTo(new File("/tmp/picture"))
   Ok("File uploaded")
}
var formData = new FormData($('#upload-file')[0]);
def image = Action(parse.multipartFormData)  { request =>
   request.body.file("picture").map { picture =>
      val filename = picture.filename
      picture.ref.moveTo(new File(s"/tmp/picture/$filename"))
      Ok("ok")
   }.getOrElse {
      InternalServerError("file upload error")
   }
}