java多文件上传显示进度条 20

用java或者js实现对多文件上传,并显示进度条,可以只显示总进度。手上有类似代码的朋友联系我,扣-15080818,跪求!... 用java或者js实现对多文件上传,并显示进度条,可以只显示总进度。手上有类似代码的朋友联系我,扣-15080818,跪求! 展开
 我来答
娱乐这个feel倍爽儿
推荐于2016-11-13 · 人生如戏,戏如人生 娱百家事,乐万千户
娱乐这个feel倍爽儿
采纳数:47982 获赞数:334156

向TA提问 私信TA
展开全部

使用   apache fileupload   ,spring MVC   jquery1.6x , bootstrap  实现一个带进度条的多文件上传,由于fileupload 的局限,暂不能实现每个上传文件都显示进度条,只能实现一个总的进度条,效果如图:

1、jsp 页面

<!DOCTYPE html>  
<%@ page contentType="text/html;charset=UTF-8"%>    
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
<script src="../js/jquery-1.6.4.js" type="text/javascript"></script>  
<link rel="stylesheet" type="text/css" href="../css/bootstrap.css"/>  
</head>  
<body>  
        <form id='fForm' class="form-actions form-horizontal" action="../upload.html"   
              encType="multipart/form-data" target="uploadf" method="post">  
                 <div class="control-group">  
                    <label class="control-label">上传文件:</label>  
                    <div class="controls">  
                        <input type="file"  name="file" style="width:550">  
                              
                    </div>  
                    <div class="controls">  
                        <input type="file"  name="file" style="width:550">  
                    </div>  
                    <div class="controls">  
                        <input type="file"  name="file" style="width:550">  
                    </div>  
                    <label class="control-label">上传进度:</label>  
                    <div class="controls">  
                        <div  class="progress progress-success progress-striped" style="width:50%">  
                            <div  id = 'proBar' class="bar" style="width: 0%"></div>  
                        </div>  
                    </div>  
                </div>  
                  
                 <div class="control-group">  
                    <div class="controls">  
                    <button type="button" id="subbut" class="btn">submit</button>  
                    </div>  
                </div>  
        </form>  
        <iframe name="uploadf" style="display:none"></iframe>  
</body>  
</html>  
<script >  
$(document).ready(function(){  
    $('#subbut').bind('click',  
            function(){  
                $('#fForm').submit();  
                var eventFun = function(){  
                    $.ajax({  
                        type: 'GET',  
                        url: '../process.json',  
                        data: {},  
                        dataType: 'json',  
                        success : function(data){  
                                $('#proBar').css('width',data.rate+''+'%');  
                                $('#proBar').empty();  
                                $('#proBar').append(data.show);   
                                if(data.rate == 100){  
                                    window.clearInterval(intId);  
                                }     
                }});};  
                var intId = window.setInterval(eventFun,500);  
    });  
});  
</script>

2、java 代码

package com.controller;  
  
import java.util.List;  
  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import javax.servlet.http.HttpSession;  
  
import org.apache.commons.fileupload.FileItemFactory;  
import org.apache.commons.fileupload.ProgressListener;  
import org.apache.commons.fileupload.disk.DiskFileItemFactory;  
import org.apache.commons.fileupload.servlet.ServletFileUpload;  
import org.apache.log4j.Logger;  
import org.springframework.stereotype.Controller;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RequestMethod;  
import org.springframework.web.bind.annotation.ResponseBody;  
import org.springframework.web.servlet.ModelAndView;  
  
@Controller  
public class FileUploadController {  
    Logger log = Logger.getLogger(FileUploadController.class);  
      
    /** 
     * upload  上传文件 
     * @param request 
     * @param response 
     * @return 
     * @throws Exception 
     */  
    @RequestMapping(value = "/upload.html", method = RequestMethod.POST)  
    public ModelAndView upload(HttpServletRequest request,  
            HttpServletResponse response) throws Exception {  
        final HttpSession hs = request.getSession();  
        ModelAndView mv = new ModelAndView();  
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);  
        if(!isMultipart){  
            return mv;  
        }  
        // Create a factory for disk-based file items  
        FileItemFactory factory = new DiskFileItemFactory();  
  
        // Create a new file upload handler  
        ServletFileUpload upload = new ServletFileUpload(factory);  
        upload.setProgressListener(new ProgressListener(){  
               public void update(long pBytesRead, long pContentLength, int pItems) {  
                   ProcessInfo pri = new ProcessInfo();  
                   pri.itemNum = pItems;  
                   pri.readSize = pBytesRead;  
                   pri.totalSize = pContentLength;  
                   pri.show = pBytesRead+"/"+pContentLength+" byte";  
                   pri.rate = Math.round(new Float(pBytesRead) / new Float(pContentLength)*100);  
                   hs.setAttribute("proInfo", pri);  
               }  
            });  
        List items = upload.parseRequest(request);  
        // Parse the request  
        // Process the uploaded items  
//      Iterator iter = items.iterator();  
//      while (iter.hasNext()) {  
//          FileItem item = (FileItem) iter.next();  
//          if (item.isFormField()) {  
//              String name = item.getFieldName();  
//              String value = item.getString();  
//              System.out.println("this is common feild!"+name+"="+value);  
//          } else {  
//              System.out.println("this is file feild!");  
//               String fieldName = item.getFieldName();  
//                  String fileName = item.getName();  
//                  String contentType = item.getContentType();  
//                  boolean isInMemory = item.isInMemory();  
//                  long sizeInBytes = item.getSize();  
//                  File uploadedFile = new File("c://"+fileName);  
//                  item.write(uploadedFile);  
//          }  
//      }  
        return mv;  
    }  
      
      
    /** 
     * process 获取进度 
     * @param request 
     * @param response 
     * @return 
     * @throws Exception 
     */  
    @RequestMapping(value = "/process.json", method = RequestMethod.GET)  
    @ResponseBody  
    public Object process(HttpServletRequest request,  
            HttpServletResponse response) throws Exception {  
        return ( ProcessInfo)request.getSession().getAttribute("proInfo");  
    }  
      
    class ProcessInfo{  
        public long totalSize = 1;  
        public long readSize = 0;  
        public String show = "";  
        public int itemNum = 0;  
        public int rate = 0;  
    }  
      
}
840129536
2014-06-13 · TA获得超过220个赞
知道小有建树答主
回答量:302
采纳率:100%
帮助的人:221万
展开全部
可以使用 swfupload 自己多查查,也比较简单,文档相对也比较全
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
care_s_p
2014-06-13
知道答主
回答量:9
采纳率:0%
帮助的人:9112
展开全部
jQuery-File-Upload
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiuaige123
2014-06-12
知道答主
回答量:3
采纳率:0%
帮助的人:2.5万
展开全部
答案 已经给你发了 请查收
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式