在Javascript中使用reqwest处理文件上载

在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({

我使用以下系统来处理AJAX上传:

虽然它适用于我迄今为止尝试过的所有东西,但我现在需要进行文件上传(当输入发生变化时)。你是怎么做的?到目前为止,我已经:

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) {

    }
});