gpt4 book ai didi

javascript - 上传的文件只包含 "WebKitFormBoundary"

转载 作者:数据小太阳 更新时间:2023-10-29 04:46:08 29 4
gpt4 key购买 nike

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

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

Controller :

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 Documentation 使用默认方法进行多部分上传。 ,而且效果很好。

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

关于javascript - 上传的文件只包含 "WebKitFormBoundary",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24769832/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com