读书人

JQuery和Servlet实现下传进度条

发布时间: 2012-10-20 14:12:47 作者: rapoo

JQuery和Servlet实现上传进度条

JQuery和Servlet实现下传进度条

1,完整源码还包含:fileUploadStatus.java、myProgressListener.java、progressServlet.java、uploadServlet.java四个类

下载地址:.http://download.csdn.net/detail/software0116/4626823

Js代码

var startTime;$(document).ready(function () {$("#subButton").click(function () {var myDate = new Date();startTime = myDate.getTime();$(this).attr("disabled", true);$("#uploadForm").submit();$("#progress").show();window.setTimeout("getProgressBar()", 1000);});$("#close").click(function(){$("#progress").hide();});});function getProgressBar() {var timestamp = (new Date()).valueOf();var bytesReadToShow = 0;var contentLengthToShow = 0;var bytesReadGtMB = 0;var contentLengthGtMB = 0;$.getJSON("/uploadProgress/getBar", {"t":timestamp}, function (json) {var bytesRead = (json.pBytesRead / 1024).toString();if (bytesRead > 1024) {bytesReadToShow = (bytesRead / 1024).toString();bytesReadGtMB = 1;}else{bytesReadToShow = bytesRead.toString();}var contentLength = (json.pContentLength / 1024).toString();if (contentLength > 1024) {contentLengthToShow = (contentLength / 1024).toString();contentLengthGtMB = 1;}else{contentLengthToShow= contentLength.toString();}bytesReadToShow = bytesReadToShow.substring(0, bytesReadToShow.lastIndexOf(".") + 3);contentLengthToShow = contentLengthToShow.substring(0, contentLengthToShow.lastIndexOf(".") + 3);if (bytesRead == contentLength) {$("#close").show();$("#uploaded").css("width", "230px");if (contentLengthGtMB == 0) {$("div#info").html("\u4e0a\u4f20\u5b8c\u6210\uff01\u603b\u5171\u5927\u5c0f" + contentLengthToShow + "KB.\u5b8c\u6210100%");} else {$("div#info").html("\u4e0a\u4f20\u5b8c\u6210\uff01\u603b\u5171\u5927\u5c0f" + contentLengthToShow + "MB.\u5b8c\u6210100%");}window.clearTimeout(interval);$("#subButton").attr("disabled", false);} else {var pastTimeBySec = (new Date().getTime() - startTime) / 1000;var sp = (bytesRead / pastTimeBySec).toString();var speed = sp.substring(0, sp.lastIndexOf(".") + 3);var percent = Math.floor((bytesRead / contentLength) * 100) + "%";$("#uploaded").css("width", percent);if (bytesReadGtMB == 0 && contentLengthGtMB == 0) {$("div#info").html("\u4e0a\u4f20\u901f\u5ea6:" + speed + "KB/Sec,\u5df2\u7ecf\u8bfb\u53d6" + bytesReadToShow + "KB,\u603b\u5171\u5927\u5c0f" + contentLengthToShow + "KB.\u5b8c\u6210" + percent);} else {if (bytesReadGtMB == 0 && contentLengthGtMB == 1) {$("div#info").html("\u4e0a\u4f20\u901f\u5ea6:" + speed + "KB/Sec,\u5df2\u7ecf\u8bfb\u53d6" + bytesReadToShow + "KB,\u603b\u5171\u5927\u5c0f" + contentLengthToShow + "MB.\u5b8c\u6210" + percent);} else {if (bytesReadGtMB == 1 && contentLengthGtMB == 1) {$("div#info").html("\u4e0a\u4f20\u901f\u5ea6:" + speed + "KB/Sec,\u5df2\u7ecf\u8bfb\u53d6" + bytesReadToShow + "MB,\u603b\u5171\u5927\u5c0f" + contentLengthToShow + "MB.\u5b8c\u6210" + percent);}}}}});var interval = window.setTimeout("getProgressBar()", 500);}

jsp代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>上传进度条</title><script type="text/javascript" src="<%=path%>/js/jquery-1.3.2.min.js"></script><script type="text/javascript" src="<%=path%>/js/progressBar.js"></script><style type="text/css">body {font-size: 11px;}#progress {left: 400px;top: 200px;position: absolute;width: 320px;height: 50px;border: 1px solid black;display: none;}#progressBar {border: 1px solid black;width: 240px;height: 15px;margin-left: 20px;margin-top: 15px;}#uploaded {height: 10px;width: 1px;background-color: #4DF011;}#title {height: 15px;background-color: #B511F0;pading: -10px;}#close {width: 10px;height: 10px;right: 1px;top: 0px;position: absolute;display: none;cursor: pointer;}</style></head><body><iframe id='target_upload' name='target_upload' src=''style='display: none'></iframe><form action="./upload" id="uploadForm" enctype="multipart/form-data"method="post" target="target_upload"><input type="file" name="upload"><input type="button" id="subButton" value="上传"></form><div id="progress"><div id="title" align="center"><span id="text">上传进度</span><div id="close">X</div></div><div id="progressBar"><div id="uploaded"></div></div><div style="font-size:9px;" align="center" id="info"></div></div></body></html>


读书人网 >编程

热点推荐