zoukankan      html  css  js  c++  java
  • Atitit 上传进度的实现与原理 目录 1.1. 前端 1 1.2. 读取进度 1 1.3. 后端 定时注入进度 1 1.1.前端                         wind

    Atitit 上传进度的实现与原理

    目录

    1.1. 前端 1

    1.2. 读取进度 1

    1.3. 后端 定时注入进度 1

    1.1. 前端 

     

                            window.setInterval(function(){

                                var url="../commServletV3?class=%20com.attilax.web.UploadServlet1%20&method=upProcessInfo%20&argstypes=&args=";

                                $.get(url, function (result, status, xhr) {

    $("#uppct").text(result.rate+"%");

                        

                                }, "json");

                            },3000);

    1.2. 读取进度

    public static Object upProcessInfo() {

    return Global.getVarVal("vals626_upProcessInfo");

    }

    1.3. 后端 定时注入进度

    //{"itemNum":3,"path":"","rate":100,"readSize":57815489,"show":"57815489/57815489 byte","totalSize":57815489}

    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);

    System.out.println( JSON.toJSONString(pri) );

    Global.setVarVal("vals626_upProcessInfo", pri);

    // hs.setAttribute("proInfo", pri);

    }

    });

    package com.attilax.web;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.util.List;

    import java.util.Map;

    import javax.servlet.ServletException;

    import javax.servlet.annotation.WebServlet;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    import org.apache.commons.fileupload.FileItem;

    import org.apache.commons.fileupload.ProgressListener;

    import org.apache.commons.fileupload.disk.DiskFileItemFactory;

    import org.apache.commons.fileupload.servlet.ServletFileUpload;

    import org.apache.commons.io.FileUtils;

    import com.alibaba.fastjson.JSON;

    import com.attilax.io.pathx;

    import com.attilax.util.Global;

    import com.attilax.util.cli.SSHHelper;

    import com.google.common.collect.Maps;

    //

    @WebServlet(name = "UploadServlet1", urlPatterns = { "/UploadServlet1", "/dafdafsss22" }, loadOnStartup = 1)

    public class UploadServlet1 extends HttpServlet {

    public static Object upProcessInfo() {

    return Global.getVarVal("vals626_upProcessInfo");

    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType("text/html");

    // 创建工厂  common fileup 1.3 jar

    DiskFileItemFactory factory = new DiskFileItemFactory();

    // 解决上传文件名的中文乱码

    // upload.setHeaderEncoding("UTF-8");

    // 通过工厂创建解析器

    ServletFileUpload upload = new ServletFileUpload(factory);

    //{"itemNum":3,"path":"","rate":100,"readSize":57815489,"show":"57815489/57815489 byte","totalSize":57815489}

    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);

    System.out.println( JSON.toJSONString(pri) );

    Global.setVarVal("vals626_upProcessInfo", pri);

    // hs.setAttribute("proInfo", pri);

    }

    });

  • 相关阅读:
    target runtime apache v6.0 not defined解决
    java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
    The valid characters are defined in RFC 7230 and RFC 3986问题
    invalid END header解决方法
    You have more than one version of ‘org.apache.commons.logging.Log’ visible, which is not allowed问题解决
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    在eclipse中import java web项目时遇到的一些问题并将该项目通过tomcat发布
    java byte转string 涉及到字节流中有中文
    spring+mybatis框架搭建时遇到Mapped Statements collection does not contain value for...的错误
    试试看读一下Zepto源码
  • 原文地址:https://www.cnblogs.com/attilax/p/15197574.html
Copyright © 2011-2022 走看看