上传的文件只包含“WebKitFormBoundary”
我真的不知道这里发生了什么事。 每次我尝试上传文件时,所有文件都包含:
------WebKitFormBoundaryJ0uWMNv89fcUsC1t--
我已经搜索了过去2天的某种解释,但我只是在圈圈。 我不知道为什么会发生这种情况。
形成:
<form id="upload-file" ecntype="multipart/form-data">
<input name="picture" type="file">
<input type="button" value="Upload" id="upload-button" />
</form>
使用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")
}
}
链接地址: http://www.djcxy.com/p/80477.html
上一篇: Uploaded file only contains "WebKitFormBoundary"
下一篇: Can use hammer.js pan events and still allow users to scroll?