项目二、自定义文件上传函数(js函数)

/**
 * 文件上传工具 v1.0
 * @param file 要上传的文件
 * @param url 要上传到的路径
 * @param div 要显示的区域
 */
function uploader(file, url, div) {
    
    var xhr = new XMLHttpRequest(); //创建xhr对象
    var _data = new FormData(); //创建数据对象
    _data.append("file", file); //添加文件

    var _prog = document.createElement("progress");//创建进度条
    _prog.setAttribute("max", "100");   //设置最大值
    var _lbl = document.createElement("label"); //创建标签
    _lbl.innerHTML = file.name;    //显示文件名
    var _btn = document.createElement("button");    //创建按钮
    _btn.innerHTML = "删除";  //设置文字
    
    var _innerDiv = document.createElement("div");//创建显示区域
    _innerDiv.appendChild(_prog); //将进度条添加到显示区域
    _innerDiv.appendChild(_lbl);  //将标签添加到显示区域
    _innerDiv.appendChild(_btn);      //将按钮添加到显示区域

    //状态发生改变时的处理
    xhr.onreadystatechange = function () {
        //如果准备好了,但还没发送时
        if(xhr.readyState == 1){
            div.appendChild(_innerDiv);
        }
        //如果传送完成了
        else if(xhr.readyState == 4 && xhr.status == 200){
            _lbl.innerHTML += xhr.responseText;  //将结果显示在标签上
        }
    }

    //传送过程处理
    xhr.upload.onprogress = function (event) {
        var percentCompleted = Math.round(event.loaded * 100 / event.total);//计算上传百分比
        _prog.setAttribute("value", percentCompleted);  //将结果显示在进度条上
    }

    xhr.open("POST", url, true);    //打开连接
    xhr.send(_data);    //发送文件
}
原文地址:https://www.cnblogs.com/tanhao/p/7442155.html