AJAX - 如何从输入文件获取数据以附加到formdata?

5

你好,我想使用纯JavaScript的Ajax(不使用jQuery)来追加FormData,但我不知道如何获取输入文件类型的数据。

function handleForm(e) 
{
    e.preventDefault();
    var username = document.getElementById('username').value;
    var email = document.getElementById('email').value;

    var data = new FormData();

    data.append('username', username); 
    data.append('email', email);
    data.append('file', ?????);  ////// How to get data from input file


    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'test2.php', true);

    xhr.onload = function(e) {
        if(this.status == 200) {
            console.log(e.currentTarget.responseText);  
            alert(e.currentTarget.responseText + ' items uploaded.');

        }
    }

    xhr.send(data);
}

...

    Username: <input type="text" name="username" id="username"><br/>
    Email: <input type="text" name="email" id="email"><br/>
    Image: <input type="file" name="file" id="myimg"><br/>

    <input type="submit">
</form>

1
你的 file 选择器查询在哪里? - NewToJS
抱歉,我的文件选择器是 #myimg。 - doflamingo
那么,为myimg添加一个选择器查询,就像你在usernameemail中一样,这不是一个好主意吗? - NewToJS
3个回答

4

1
document.getElementById("file_input_id").files[0]

尝试

1
解释一下为什么应该使用这个,并解释一下它为什么有 .file[0],这不是一个好主意吗?如果您想发布答案/解决方案,我强烈建议提供详细的答案,因为有些人希望从给出的答案/解决方案中学习,而不仅仅是复制/粘贴它们。 - NewToJS

0
<input type="file" id="fileinput" />

获取文件...您可以使用

var myFile = $('#fileinput').prop('files')[0];

嗯,这对我来说看起来像是jQuery...“纯JavaScript Ajax(没有jQuery)” - NewToJS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接