上传的文件只包含“WebKitFormBoundary”

我真的不知道这里发生了什么。 每次我尝试上传文件时,所有文件都包含:

------WebKitFormBoundaryJ0uWMNv89fcUsC1t--

我搜索了过去两天的某些解释,但我只是在圈子里。 我不知道为什么会这样。

形成:

 

使用Javascript:

 $('#upload-button').click(function(e){ e.preventDefault(); var formData = new FormData($('#upload-file')); $.ajax({ url: '/image', type: 'POST', xhr: function() { var myXhr = $.ajaxSettings.xhr(); if(myXhr.upload){ myXhr.upload.addEventListener('progress',progressHandlingFunction, false); } return myXhr; }, data: formData, cache: false, // contentType: false, processData: false }); }); 

控制器:

 def image = Action(parse.temporaryFile) { request => request.body.moveTo(new File("/tmp/picture")) Ok("File uploaded") } 

问题出现在Javascript中,而不是Scala中。 我没有不恰当地引用表单元素。

 var formData = new FormData($('#upload-file')[0]); 

但是,我也遇到了parse.temporaryFile问题,并且没有使用上面的代码正确存储文件。 当我在文本编辑器中检查存储的文件时,我注意到它仍然在文件的开头有------WebKitFormBoundaryJ0uWMNv89fcUsC1t-- ,然后是表单信息,然后是文件字节。

为了解决这个问题,我根据Play文档使用了默认方法进行多部分上传,它运行得很好。

 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") } }