servlet+jquery实现文件上传进度条示例代码

2020-05-27 18:03:29易采站长站整理


package com.fei.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.fei.util.FileUploadInfo;

public class UploadFileProgressServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String responseContent = "";

Object obj = request.getSession().getAttribute("uploadInfo");
if(obj == null){
responseContent = "{'data':'NoData'}";
}else{
FileUploadInfo uploadInfo = (FileUploadInfo)obj;
responseContent = uploadInfo.toString();
if(uploadInfo.getUploadPercent()== 100.0){
request.getSession().setAttribute("uploadInfo", null);
}
}
System.out.println("文件上次情况:"+responseContent);
response.getWriter().print(responseContent);
}
}

前台页面upload2.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="js/jquery-2.1.1.js" type="text/javascript"></script>

<script >
var falseNum = 0;
$(document).ready(function(){
$('#subbut').bind('click',
function(){
$('#fForm').submit();
var eventFun = function(){
$.ajax({
type: 'GET',
url: '/uploadtest/UploadFileProgressServlet.do',
data: {},
dataType: 'text',
success : function(resData){
//如果10次都失败,那就不要继续访问了
if(falseNum > 10){
window.clearInterval(intId);
return;
}
var obj = eval("("+resData+")");
if(obj.data == 'NoData'){
falseNum ++ ;
return;
}
$("#graphbox").css('display','block');
$(".progressbar").css('width',obj.uploadPrecent+'%');
$("#uploadPer").html(obj.uploadPrecent+'%');
$("#progressInfo").html('总大小:'+obj.totalSize
+',速度:'+obj.uploadSpeed
+'%,剩余时间:'+obj.remainTime+',已用时间:'+obj.useTime);
if(obj.uploadPrecent == 100){
window.clearInterval(intId);