zoukankan      html  css  js  c++  java
  • 上传带进度条

    package com.upload;
    
    /**
     * 自定义文件上传监听器
     */
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import org.apache.commons.fileupload.ProgressListener;
    
    public class MyProcessLister implements ProgressListener{
    
        HttpSession session;
        public MyProcessLister(HttpServletRequest request)
        {
            session = request.getSession();
            session.setAttribute("status", 0);
            session.setAttribute("times", 1);
        }
        @Override
        public void update(long read, long total, int times) 
        {
            int precent = (int) (read*100/total);
            session.setAttribute("status", precent);
            session.setAttribute("times", times);
        }
    }
    package com.upload;
    /**
     * 刷新进度
     */
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import net.sf.json.JSONObject;
    
    @SuppressWarnings("serial")
    @WebServlet("/upload/process")
    public class RefreshProcess extends HttpServlet 
    {
        public void doPost(HttpServletRequest request ,HttpServletResponse response) throws IOException
        {
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-Type", "text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            HttpSession session = request.getSession();
            if (null == session.getAttribute("status"))
            {
                session.setAttribute("status", 0);
                session.setAttribute("times", 1);
            }
            JSONObject json = new JSONObject();
            json.put("status", session.getAttribute("status"));
            json.put("times", session.getAttribute("times"));
            out.print(json);
            out.close();
        }
    }
    package com.upload;
    
    /***
     * 文件上传
        <script type="text/javascript" src="${path}/js/jquery.js" ></script>
        <script type="text/javascript" src="${path}/js/bootstrap.min.js" ></script>
        <script type="text/javascript">
            
            $("#bt").click(function(){
                tForm();    // 提交表单
                setInterval(procesfun,1000); // 定时任务
            });
            // 提交form表单
            function tForm(){
                 var form = new FormData(document.getElementById("tf"));
                 $.ajax({
                        url:"${path}/servlet/UploadServlet",
                        type:"post",
                        data:form,
                        processData:false,
                        contentType:false,
                        success:function(data){
                            console.log(data);
                        },
                        error:function(e){
                            $("#result").html("用户取消了上传操作").css("color","red");
                        }
                    });
            };
            // 定时请求上传进度
            function procesfun(){
                
                $.ajax({
                    type:"post",
                    url:"${path}/upload/process",
                    success:function(data){
                        var obj = eval('(' + data + ')');
                        if ("1" == obj.times){
                            $("#result").html("身份证正面正在上传,上传进度为:"+obj.status+"%,请耐心等待。").css("color","red");
                        }
                        if ("2" == obj.times){
                            $("#result").html("身份证反面正在上传,上传进度为:"+obj.status+"%,请耐心等待。").css("color","red");
                        }
                        if ("3" == obj.times){
                            $("#result").html("手持身份证正在上传,上传进度为:"+obj.status+"%,请耐心等待。").css("color","red");
                            if("100" == obj.status){
                                $("#result").html("文件上传成功。").css("color","red");
                                window.setTimeout("window.location='${path}/uploadSuccess.jsp'",2000);
                            }
                        }
                    },
                    error:function(){
                        $("#result").html("用户取消了上传操作").css("color","red");
                    }
                })
            }
            
            function checkFile(){
                var zm = document.getElementById("zm").value;
                var fm = document.getElementById("fm").value;
                var sc = document.getElementById("sc").value;
                if ("" == zm || null ==zm){
                    alert("身份证正面不能为空。");
                    return false;
                }
                if ("" == fm || null ==fm){
                    alert("身份证反面不能为空。");
                    return false;
                }
                if ("" == sc || null ==sc){
                    alert("手持身份证不能为空。");
                    return false;
                }
            };
            
            function info(){
                alert("上传用户信息可能需要一分钟左右,请耐心等待。");
            }
        </script>
    
    
    
    */
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.UUID;
    
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import net.sf.json.JSONObject;
    
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import org.apache.commons.lang3.StringUtils;
    import org.apache.commons.mail.EmailException;
    
    import com.email.SendMailUtil;
    import com.model.SqlContext;
    import com.sql.Conn;
    
    @SuppressWarnings("serial")
    @WebServlet(value="/servlet/UploadServlet")
    public class UpLoadServlet extends HttpServlet 
    {
        @SuppressWarnings("null")
        public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException 
        {
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-Type", "text/html;charset=utf-8");
            PrintWriter write = response.getWriter();
        
            String savePath = this.getServletContext().getRealPath("/upload");
            StringBuffer sb  = new StringBuffer();
            
            File saveFileDir = new File(savePath);
            if (!saveFileDir.exists()) 
            {
                // 创建临时目录
                saveFileDir.mkdirs();
            }
         
            String tmpPath = this.getServletContext().getRealPath("/temp");
            File tmpFile = new File(tmpPath);
            if (!tmpFile.exists()) 
            {
                // 创建临时目录
                tmpFile.mkdirs();
            }
            DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            MyProcessLister listener = new MyProcessLister(request);// 在文件上传至流时进行文件监听
            upload.setProgressListener(listener);// 注册监听 
                   
            try 
            {
                List<FileItem> items = upload.parseRequest(request);
                Iterator<?> itr = items.iterator();
                while (itr.hasNext())
                {
                     FileItem item = (FileItem) itr.next();
                     if (!item.isFormField()) // 如果为非文件类型数据
                     {
                         String fileName = item.getName();
                         if (null == fileName && 0 == fileName.trim().length()) 
                         {
                             continue;
                         }
                         // 文件名和文件后缀名
                         fileName = fileName.substring(fileName.lastIndexOf("\") + 1);
                         String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
                         String saveFileName = UUID.randomUUID().toString()+"."+fileExt;
                         InputStream is = item.getInputStream();
                         //创建一个文件输出流
                         FileOutputStream out = new FileOutputStream(savePath + "\" + saveFileName); 
                         sb.append(saveFileName);
                         sb.append(";");
                         byte buffer[] = new byte[1024];
                         //判断输入流中的数据是否已经读完的标致
                         int len = 0;
                         while((len = is.read(buffer)) > 0)
                         {
                             out.write(buffer, 0, len);
                         }
                         //关闭输出流
                         out.close();
                         //关闭输入流
                         is.close();
                         //删除临时文件
                         item.delete();
                     } 
                }          
            } 
            catch (FileUploadException e)
            {
                System.out.println("throws FileUploadException.");
            } 
            catch (IOException e) 
            {
                System.out.println("throw IOException.");
            } 
        }
    }
  • 相关阅读:
    CSS之APP开发比较实用的CSS属性
    关于 js 中的 call 和 apply使用理解
    灵感一:搜索型APP,帮助读书爱好者,搜索某本书的关键字
    常用排序算法:基数排序
    常用排序算法:桶排序
    常用排序算法:计数排序
    常用排序算法:希尔排序
    常用排序算法:归并排序
    常用排序算法:堆排序
    常用排序算法:快速排序
  • 原文地址:https://www.cnblogs.com/nevegiveup/p/7445667.html
Copyright © 2011-2022 走看看