java上传进度条(java上传进度条怎么实现)

本篇文章给大家谈谈java上传进度条,以及java上传进度条怎么实现对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、java上传实现百分比的进度条,怎么实现2、java多文件上传显示进度条3、java中如何在拷贝文件时加入进度条,进度条跟文件拷贝进度一致4、java上传Excel文件,如何实现进度条显示?5、上传文件与设置进度条

java上传实现百分比的进度条,怎么实现

这个你完全可以参考jQuery UI里面的

点击demo—-ProgressBar那里面完全就是一个进度条,你试试。

java多文件上传显示进度条

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

1、jsp 页面

!DOCTYPE html  

%@ page contentType=”text/html;charset=UTF-8″%    

%@ taglib prefix=”c” uri=”” %    

html xmlns=””  

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;  

    }  

      

}

java中如何在拷贝文件时加入进度条,进度条跟文件拷贝进度一致

给你个例子,你再改进下

import javax.swing.JButton;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JProgressBar;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Component;

import java.awt.Dimension;

import java.awt.Toolkit;

import java.beans.PropertyChangeEvent;

import java.beans.PropertyChangeListener;

public class JprogressBar extends JFrame implements Runnable {

public JprogressBar() {

initUI();

}

private void initUI() {

btCopy = new JButton(“open file….”);

JButton btCancel = new JButton(“cancel”);

JButton btSavePath = new JButton(“save Path…”);

copyFileProgressBar = new JProgressBar(0, 100);

copyFileProgressBar.setPreferredSize(new Dimension(450, 15));

copyFileProgressBar.setBackground(Color.GREEN);

copyFileProgressBar.setForeground(Color.PINK);

copyFileProgressBar.setStringPainted(true);

copyFileProgressBar.setVisible(false);

openFileDialog = new JFileChooser(“.”);

this.setLayout(new BorderLayout());

JPanel tmpPanel1 = new JPanel();

JPanel tmpPanel2 = new JPanel();

btCopy.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

Thread t = new Thread(JprogressBar.this);

t.start();

}

});

btSavePath.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

savePath = setSavePath();

}

});

btCancel.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

stop = true;

btCopy.setEnabled(true);

}

});

tmpPanel1.add(btCopy);

tmpPanel1.add(btSavePath);

tmpPanel1.add(btCancel);

tmpPanel2.add(copyFileProgressBar);

this.add(tmpPanel1, BorderLayout.NORTH);

this.add(tmpPanel2, BorderLayout.SOUTH);

this.setTitle(“read and copy file”);

this.setPreferredSize(new Dimension(450, 95));

this.pack();

Dimension cd = centerIt(this);

this.setLocation(cd.width, cd.height);

final Dimension des = this.getPreferredSize();

this.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

stop = true;

System.exit(0);

}

public void windowStateChanged(WindowEvent e) {

System.out.println(“ss”);

if (e.paramString().equals(“WINDOW_STATE_CHANGED”)) {

System.out.println(“ss”);

JprogressBar.this.setSize(des);

}

}

});

this.addPropertyChangeListener(new PropertyChangeListener() {

public void propertyChange(PropertyChangeEvent evt) {

// System.out.println(“ss”);

// JprogressBar.this.setSize(des);

}

});

}

/*

* start read file..

*/

public void run() {

stop = false;

int c = openFileDialog.showOpenDialog(this);

if (c == JFileChooser.APPROVE_OPTION) {

try {

File selectFile = openFileDialog.getSelectedFile();

if (selectFile.equals(savePath)) {

JOptionPane.showMessageDialog(this, ” \t target file and source file can’t as the same !”);

return;

}

if (savePath == null) {

JOptionPane.showMessageDialog(this, ” \t please select a path to save file !”);

return;

}

btCopy.setEnabled(false);

copyFileProgressBar.setVisible(true);

long size = selectFile.length();

copyFileProgressBar.setMaximum((int) size);

FileInputStream fin = new FileInputStream(selectFile);

FileOutputStream fout = new FileOutputStream(savePath);

byte[] buff = new byte[1024];

int s;

int count = 0;

long startTime = System.currentTimeMillis();

while ((s = fin.read(buff)) 0 !stop) {

count += s;

fout.write(buff, 0, s);

String str = “” + 100 * (count / (size + 0.01));

str = forMatString(str);

long endTime = System.currentTimeMillis();

String speedStr = getSpeed(count, startTime, endTime);

String remailTime = getRemailTime(count, size, startTime, endTime);

copyFileProgressBar.setString(” precent: ” + str + ” %” + ” speed: ” + speedStr + ” ” + ” remail time : ” + remailTime);

copyFileProgressBar.setValue(count);

}

fin.close();

fout.close();

if (!stop) {

JOptionPane.showMessageDialog(this, ” \t copy file complete !”);

}

stop = true;

savePath = null;

btCopy.setEnabled(true);

copyFileProgressBar.setValue(0);

copyFileProgressBar.setString(“”);

copyFileProgressBar.setVisible(false);

} catch (Exception ex) {

JOptionPane.showMessageDialog(this, “err:\n” + ex.getMessage());

}

}

}

/*

*select save file path

*/

private File setSavePath() {

File path = null;

int c = openFileDialog.showSaveDialog(this);

if (c == JFileChooser.APPROVE_OPTION) {

path = openFileDialog.getSelectedFile();

}

return path;

}

/*

* make frame center

*/

private Dimension centerIt(Component c) {

Dimension size = c.getSize();

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

int sH = screenSize.height;

int sW = screenSize.width;

int cW = size.width;

int cH = size.height;

return new Dimension((sW – cW) / 2, (sH – cH) / 2);

}

/*

* show copy file speed

*/

private String getSpeed(long readByte, long startTime, long endTime) {

long speed;

if (endTime – startTime != 0) {

speed = (readByte / (endTime – startTime)) * 1000;

if (speed 1024 * 1024) {

return forMatString(speed / (1024 * 1024 + 0.1) + “”) + ” m/s”;

} else if (speed 1024) {

return forMatString(speed / (1024 + 0.1) + “”) + ” k/s”;

} else {

return speed + ” b/s”;

}

} else {

return “0 b/s”;

}

}

/*

* format string

*/

private String forMatString(String str) {

String values;

int index = str.indexOf(“.”);

values = str.substring(0, index + 3);

return values;

}

/*

* get remail time

*/

private String getRemailTime(long readByte, long totalByte, long startTime, long endTime) {

long hour;

long minute;

long second;

String h;

String m;

String s;

try {

long speed = readByte / (endTime – startTime);

long time = ((totalByte – readByte) / speed) / 1000;

hour = time / 3600;

minute = time % 3600 / 60;

second = time % 3600 % 60;

h = hour + “”;

m = minute + “”;

s = second + “”;

if (hour 10) {

m = “0” + minute;

}

if (minute 10) {

m = “0” + minute;

}

if (second 10) {

s = “0” + second;

}

return h + “:” + m + “:” + s;

} catch (Exception ex) {

return “00:00:00”;

}

}

/*

* show frm

*/

public static void main(String[] args) {

JprogressBar frm = new JprogressBar();

frm.setVisible(true);

}

/*

*

*/

private JButton btCopy;

private JFileChooser openFileDialog;

private JProgressBar copyFileProgressBar;

private File savePath = null;

private boolean stop = false;

}

java上传Excel文件,如何实现进度条显示?

您好,1、开发简单,由于要定时起一个HTTP 连接去获得进度信息,因此,发生的连接请求也增多 ,另外,在低速的情况下,常常会出各种各样的BUG,网络环境的差异,还造成那个周期很 难选择。 2、开发较复杂,COMET 本身需要服务器的支持,这样TOMCAT 至少得选6.0,否则服务器长连 接,压力肯定受不了,但是,性能相对好一些,由于一次上传实际上只启动了两个HTTP 链接 请求,比起AJAX 来说,那是要少很多请求了。另外一个优点是,COMET 将使得服务器可以主 动将进度情况汇报给客户端,因此,客户端的进度条相对来说,要准确一点。 3、目前看来解决方案最好的一个了,虽然开发需要涉及到 FLASH、JAVASCRIPT、以及 JAVA 的 开发,但是代码量都不是很多,因此,复杂程度相对属于中等程度。但是FLASH 也有几个问 题:第一、浏览器 FLASH 版本兼容问题,第二、FLASH 是通过获得发送数据的进度来体现进度 条的,因此虽然不需要服务器端开发进度部分的代码,但是进度的展现有些不是很准确,经 常会有一开始速度很快,但是后面越来越慢的情况。 4、就不说了,开发肯定是最麻烦的,但是进度条效果肯定是最好的,但要给每种浏览器都 要搞个插件,还是比较痛苦的。 总结一下,希望对大家有帮助。 2 其实很麻烦的,之前试过,会有下面几个问题: 第一、服务器端一定要选择支持HTTP 长连接的服务器,否则操作系统的线程限制,会导致并 发降低。 第二、除非原来就采用的是COMET 的进度方式,否则,你要把周期获得进度的方式,改成 COMET 的方式,那很郁闷的,COMET 要服务器主动把进度信息用JAVASCRIPT 的方式发回客户端 ,所以需要把结构转化为JAVASCRIPT 调用才行。 第三、对于不同的浏览器,处理 JAVASCRIPT 的方式是不一样的,我试验的结果是,IE 会在收 到一定数量的JAVASCRIPT 之后才执行,所以虽然我在服务器端每次都调用了flush 方法,但 是界面上还是需要等一段时间才能响应。而这段时间又不好控制了,因为上传文件大小的不 一样,导致了下发的JAVASCRIPT 数量也不一样,所以基本很难达到FLASH 那样的效果。 其实如果已经决定采用flash 了,那就不需要再去修改服务器端的代码了,因为那个进度信 息服务器发不发都不会影响到代码的执行,反正FLASH 本身已经提供了进度指示了,所以, 说简单地,要改成FLASH 上传,你直接做个FLASH 客户端就好了,不需要再改服务器端了。 对了,还有一种情况需要改服务器端,那就是FLASH 上传多个文件是采用多线程上传的,因 此如果你一次上传多个文件,那就需要改服务器端了。需要在所有线程上传完成的情况下, 再去修改数据库。

java上传进度条(java上传进度条怎么实现)

上传文件与设置进度条

1、引入bootstrap.css和jquery.js;

2、点击按钮后获取文件列表,添加到FormData,调用open函数指定类型与URL地址,在发起请求send();

3、监听onreadystatechange事件,当服务器回应后,把传回来的数据转换成JSON字符串,修改img的URL地址,让图片文件显示在页面中;

4、创建xhr对象开启监听文件上传进度,e.lengthComputable是true则计算进度条百分比,把结果给进度条;

5、进度条完成后,修改颜色,移除类添加类

HTML

JS

关于java上传进度条和java上传进度条怎么实现的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月2日 21:46:29
下一篇 2024年4月2日 21:56:45

相关推荐

  • 深入java虚拟机pdf,深入java虚拟机 中村成洋 pdf

    在linux环境下,java怎么实现从word格式转换为pdf格式 //设置当前使用的打印机,我的Adobe Distiller打印机名字为 Adobe PDF wordCom.setProperty( ActivePrinter , new Variant( Adobe PDF ));//设置printout的参数,将word文档打印为postscript…

    2024年5月23日
    4400
  • java截取指定长度字符串,java截取指定字符串之后的

    java中如何截取字符串中的指定一部分 第一个参数是开始截取的字符位置。(从0开始)第二个参数是结束字符的位置+1。(从0开始)indexof函数的作用是查找该字符串中的某个字的位置,并且返回。 int end);截取s中从begin开始至end结束时的字符串,并将其赋值给s;split讲解:java.lang.string.split split 方法 将…

    2024年5月23日
    4200
  • java绑定一个端口,java使用端口

    java如何多个service共用一个端口 你如果有多个项目的话,你可以把多个项目放到一个tomcat里面,这样端口相同使用项目名称来进行区分项目。你如果非要使用同一个,你也可以配置不同的域名导向不同的项目。就是访问的域名不同转接到的项目不同。 如果需要同时启动多个程序,要么修改tomcat的配置文件中的监听端口。要么修改jar包程序的监听端口。不能在一台服…

    2024年5月23日
    3500
  • java多线程并发编程基础,Java多线程并发执行返回

    电脑培训分享Java并发编程:核心理论 电脑培训发现本系列会从线程间协调的方式(wait、notify、notifyAll)、Synchronized及Volatile的本质入手,详细解释JDK为我们提供的每种并发工具和底层实现机制。 人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接…

    2024年5月23日
    4700
  • 自学java找工作,自学java找工作需要包装简历吗

    自学java学多久可以找到工作 1、自学Java至少需要一年以上的时间才能达到找工作的水平。报班培训四到六个月的时间就可以找到一份不错的工作。 2、自学Java至少需要一年以上的时间才能达到找工作的水平。 3、如果要想找到一份Java相关的工作,需要至少学习5-6个月时间才能就业。Java开发需要掌握一些基础的编程语言知识,比如掌握面向对象的编程思想、基本的…

    2024年5月23日
    4300
  • java左移右移,java 左移

    java位移问题 1、思路:直接用Integer类的bit运算操作。 2、移位操作:左移:向左移位,符号后面的数字是移了多少位,移的位用0补齐,例如2进制数01111111左移一位后变为11111110,移位是字节操作。 3、Java 位运算 Java 位运算[转]一,Java 位运算表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的…

    2024年5月23日
    4200
  • java技术规范,java规范性要求

    现在主流的JAVA技术是什么? java最流行开发技术程序员必看 1 、Git Git一直是世界上最受欢迎的Java工具之一,也是Java开发人员最杰出的工具之一。Git是一个开源工具,是-种出色的分布式版本控制解决方案。 (1).Java基础语法、数组、类与对象、继承与多态、异常、范型、集合、流与文件、反射、枚举、自动装箱和注解。(2).Java面向对象编…

    2024年5月23日
    4000
  • javasocket编程,Java socket编程中,禁用nagle算法的参数

    Java进行并发多连接socket编程 1、Java可利用ServerSocket类对外部客户端提供多个socket接口。基本的做法是先创建一个ServerSocket实例,并绑定一个指定的端口,然后在这个实例上调用accept()方法等待客户端的连接请求。 2、Socket socket=server.accept(0;Thread handleThrea…

    2024年5月23日
    4600
  • java死亡,java死代码是什么意思

    我的世界传送回死亡点指令是什么? 1、下面就让我们一起来了解一下吧:我的世界回到死的地方的指令是输入/back,就可以回到死亡地点了,当然也可以看信标,因为死亡后会有一道光集中在死亡点,只要循着光就可以找到目的地了。 2、在服务器中的指令 首先打开指令台,在指令行输入“/back”就可以回到自己的死亡地点了。在单人游戏中的指令 在单人游戏中,您无法直接返回到…

    2024年5月23日
    4800
  • myeclipse能部署java工程么,myeclipse支持jdk18

    myeclipse如何建java文件 1、点击【File】—【New】–【Class】在如下界面,输入Class的名字,如Test,点击【Finish】。Test.java文件创建成功。 2、点击【File】—【New】–【Class】 在如下界面,输入Class的名字,如Test,点击【Finish】。 Te…

    2024年5月23日
    3900

发表回复

登录后才能评论



关注微信