直接放代码。
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <input type="file" id="myFile"/> <progress id="myProgress" value="0"></progress> <hr/> <script src="${pageContext.request.contextPath}/js/jquery-1.12.3.js"></script> <script>//第一种方式,ajax绑定进度条 $("#myFile").change(function () { var formData = new FormData(); formData.append("filename",$(this)[0].files[0]); $.ajax({ method: "post",//请求方式 url: "xxxx",//请求服务端地址 data: formData, //这里上传的数据使用了formData 对象 contentType: false,//避免JQuery操作头部信息,丢失边界符,从而使服务端无法识别此编码类型文件 processData: false,//不序列化将要传输的文件数据 xhr: function () { //这里我们先拿到jQuery产生的 XMLHttpRequest对象,为其增加 progress 事件绑定,然后再返回交给ajax使用 var xhr = $.ajaxSettings.xhr(); if (onprogress && xhr.upload) { xhr.upload.addEventListener("progress", onprogress, false); return xhr; } }, success:function () {//完成事件时 }, error:function () {//出现错误时的事件 } }); }); /** * 侦查附件上传情况 ,这个方法大概0.05-0.1秒执行一次 */ function onprogress(evt) { var loaded = evt.loaded; //已经上传大小情况 var tot = evt.total; //附件总大小 var per = Math.floor(100 * loaded / tot); //已经上传的百分比 $("#myProgress").attr("value",per); } </script> </body> </html>