AJAX - 如何从输入文件中获取数据以追加表单数据?

dof*_*ngo 5 html javascript xml ajax xmlhttprequest

您好,我想使用纯 javascript ajax(无 jquery)来附加表单数据,但我不知道如何从输入文件类型中获取数据

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);
}
Run Code Online (Sandbox Code Playgroud)

...

    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>
Run Code Online (Sandbox Code Playgroud)

And*_*eas 4

HTML元素<input type="file" />有一个files属性(类型为FileList)。
如果已选择文件,请检查长度,如果已选择,则将文件添加到FormData对象

var fileInput = document.getElementById("myimg");
if (fileInput.files.length > 0) {
    data.append("file", fileInput.files[0]);
}
Run Code Online (Sandbox Code Playgroud)

有关如何使用该FormData对象的更多示例,请查看此链接: https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects