在Javascript中使用reqwest处理文件上载
我使用以下系统来处理AJAX上传: 虽然它适用于我迄今为止尝试过的所有东西,但我现在需要进行文件上传(当输入发生变化时)。你是怎么做的?到目前为止,我已经:在Javascript中使用reqwest处理文件上载,javascript,reqwest,Javascript,Reqwest,我使用以下系统来处理AJAX上传: 虽然它适用于我迄今为止尝试过的所有东西,但我现在需要进行文件上传(当输入发生变化时)。你是怎么做的?到目前为止,我已经: document.getElementById('upload-file').addEventListener("change", function(e){ var formData = new FormData(); var file = e.currentTarget.files[0]; reqwest({
document.getElementById('upload-file').addEventListener("change", function(e){
var formData = new FormData();
var file = e.currentTarget.files[0];
reqwest({
url: '/cgi-bin/upload.cgi',
type: 'json',
method: 'post',
headers: {
'enctype': 'multipart/form-data'
},
data: { the_file: file },
error: function (err) {
alert("There was an error: " + err)
},
success: function (data) {
}
});
});
不幸的是,这只是发送:
_文件[对象+文件]
…没有数据附加到文件。您需要使用API
我在这里找到了答案: 事实证明,您需要:
processData: false, // important
因此,完整代码:
reqwest({
url: '/cgi-bin/upload.cgi',
type: 'json',
method: 'post',
processData: false, // important
headers: {
'enctype': 'multipart/form-data'
},
data: fd,
error: function (err) {
alert("There was an error: " + err)
},
success: function (data) {
}
});
它现在完美地发送了文件:)我觉得不错。你能不能也把服务器从的_文件中得到的东西发出来?@choz谢谢。我刚刚得到的[]内容显示:
{'the_file'=>'[object file]}代码>。如果我尝试将其作为一个文件,它只是空的。啊,伙计-刚刚发现这个:。事实证明,您需要:processData:false,
-works now:)好的,很高兴它能正常工作。谢谢您的回复。我刚找到这个帖子:。似乎添加processData:false,
起到了关键作用:)
reqwest({
url: '/cgi-bin/upload.cgi',
type: 'json',
method: 'post',
processData: false, // important
headers: {
'enctype': 'multipart/form-data'
},
data: fd,
error: function (err) {
alert("There was an error: " + err)
},
success: function (data) {
}
});