1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
| <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script src="../data/js/jquery-3.0.0.min.js" type="text/javascript" charset="utf-8"></script> <title>文件上传 原生ajax上传</title> <style type="text/css"> .container { width: 200px; height: 20px; background-color: gray; }
#progress { height: 20px; background-color: orange; display: inline-block; } </style> </head>
<body> <!--//原生ajax--> <!--<form action="http://www.v2.com/api/folder/zffallfile" enctype="multipart/form-data" method="post"> 上传文件1: <input type="file" name="file1" id="file"><br /> <div class='container'> <span id="progress"></span> </div> </form> <br> <button onclick="fileSelected()">文件信息</button><button onclick="uploadFile()">确认上传</button> <div id="info"> <div id="fileName"></div> <div id="fileSize"></div> <div id="fileType"></div> </div> <div id="result"></div> <script> function fileSelected() { var file = document.getElementById('file').files[0]; if (file) { var fileSize = 0; if (file.size > 1024 * 1024) fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB'; else fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB'; document.getElementById('fileName').innerHTML = 'Name: ' + file.name; document.getElementById('fileSize').innerHTML = 'Size: ' + fileSize; document.getElementById('fileType').innerHTML = 'Type: ' + file.type; } } function uploadFile() { var fd = new FormData(); fd.append("file", document.getElementById('file').files[0]); var xhr = new XMLHttpRequest(); xhr.upload.addEventListener("progress", uploadProgress, false); xhr.addEventListener("load", uploadComplete, false); xhr.addEventListener("error", uploadFailed, false); xhr.addEventListener("abort", uploadCanceled, false); xhr.open("POST", "http://www.v2.com/api/folder/zffallfile");//修改成自己的接口 xhr.send(fd); }
function uploadProgress(evt) { if (evt.lengthComputable) { var percent = Math.round(evt.loaded * 100 / evt.total);
document.getElementById('progress').innerHTML = percent.toFixed(2) + '%'; document.getElementById('progress').style.width = percent.toFixed(2) + '%'; } else { document.getElementById('progress').innerHTML = 'unable to compute'; } } function uploadComplete(evt) { /* 服务器端返回响应时候触发event事件*/ document.getElementById('result').innerHTML = evt.target.responseText; } function uploadFailed(evt) { alert("There was an error attempting to upload the file."); } function uploadCanceled(evt) { alert("The upload has been canceled by the user or the browser dropped the connection."); } </script>-->
<!--//jquery ajax--> <form action="http://www.v2.com/api/folder/zffallfile" enctype="multipart/form-data" method="post"> 上传文件1: <input type="file" name="file"><br /> <div class='container'> <span id="progress"></span> </div> </form> <br> <button onclick="upload()">确认上传</button> <div id="info"></div> <div id="result"></div> <script> var totalSize = 0;
//绑定所有type=file的元素的onchange事件的处理函数 $(':file').change(function () { var file = this.files[0]; //假设file标签没打开multiple属性,那么只取第一个文件就行了 name = file.name; size = file.size; type = file.type; url = window.URL.createObjectURL(file); //获取本地文件的url,如果是图片文件,可用于预览图片
totalSize += size; $("#info").html("文件名:" + name + "<br>文件类型:" + type + "<br>文件大小:" + size + "<br>url: " + url);
});
function upload() { //创建FormData对象,初始化为form表单中的数据。需要添加其他数据可使用formData.append("property", "value"); var formData = new FormData($('form')[0]);
//ajax异步上传 $.ajax({ url: "http://www.v2.com/api/folder/zffallfile", type: "POST", data: formData, xhr: function () { //获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数
myXhr = $.ajaxSettings.xhr(); if (myXhr.upload) { //检查upload属性是否存在 //绑定progress事件的回调函数 myXhr.upload.addEventListener('progress', progressHandlingFunction, false); } return myXhr; //xhr对象返回给jQuery使用 }, success: function (result) { $("#result").html(result); }, contentType: false, //必须false才会自动加上正确的Content-Type processData: false //必须false才会避开jQuery对 formdata 的默认处理 }); }
//上传进度回调函数: function progressHandlingFunction(e) { console.log(e) if (e.lengthComputable) { $('#progress').attr({ value: e.loaded, max: e.total }); //更新数据到进度条 var percent = e.loaded / e.total * 100; $('#progress').html(e.loaded + "/" + e.total + " bytes. " + percent.toFixed(2) + "%"); $('#progress').css('width', percent.toFixed(2) + "%"); } } </script> </body> </html>
|