java struts文件上传进度条

Struts2 框架上传文件的进度条的实现

//-------------------------------------------------------------------------------------------------------------

Struts上传文件是在拦截器中实现的!!在action中文件的处理是对在服务器端的临时文件操作的也就是在action中文件已经上传完毕。拦截器中自己重新实现org.apache.struts2.dispatcher.multipart.MultiPartRequest的接口 创建一个自己MyMultiPartRequest的类!里面的方法和org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest 里面的方法基本上一样只要在 pareRequest方法里面添加自己的监听器就可以!

//创建自己的监听器

MyProgressListener progressListener;

progressListener =new MyProgressListener(servletRequest);

//添加自己的监听器

upload.setProgressListener(progressListener);MyProgressListener

//---------------------------------------------------------------

创建自己的监听器的类MyProgressListener实现的是org.apache.commons.fileupload.ProgressListener的接口 里面的方法有:

private HttpSession session;

public MyProgressListener(HttpServletRequest request) {

session=request.getSession();

State state=new State();

session.setAttribute("state", state);

}

public void update(long readedBytes, long totalBytes,int currentItem) {

State state=(State) session.getAttribute("state");

state.setReadedBytes(readedBytes);

state.setTotalBytes(totalBytes);

state.setCurrentItem(currentItem); }

//---------------------------------------------------------------

State是状态类:

里面属性有readedBtyes当前读大小;

totalBytes文件总大小;

currentItem 传输量;

rate百分比;

这几个属性有对应的get和set方法

//---------------------------------------------------------

Action类里面包含2个方法

(1):文件上传按照Struts的文档中file-upload.html这个文件可以详细说明

(2):文件进度条的方法里可以先得到HttpSession session; session=ServletActionContext.getRequest().getSession();

根据监听器里面session.setAttribute("state", state);

可以得到相应的State对象 (State) session.getAttribute("state");

//---------------------------------------------------------------

Struts.xml文件中加入对应的配置:

这个配置的功能是使系统调用自己创建的MyMultiPartRequest而不是JakartaMultiPartRequest 是按照Struts-default.xml来配的 因为jsp页面用的是jquery来实现异步的, 需要导入对应的struts2-json-plugin-2.2.3.jar

//--------------------------------------------------------------

 Jsp :

 

<script type="text/javascript" src="jquery-1.8.3.js"></script>

<script >           

       function callback(){

         $.post(

           './uploading_updateplan',//对应的action路径

           function(data)         

              if(data.state.rate!=100){

               $("#m").text(data.state.readedBytes+'/'+data.state.totalBytes+':'+data.state.rate+'%');

             }else{             

               $("#m").text(data.state.readedBytes+'/'+data.state.totalBytes+':'+'100% 上传完成!');                          

             }    

           },

           'json'          

          );

       }

     function f() {

       window.setInterval("callback()", 100);//每隔100毫秒执行callback

       document.form.submit();//提交数据

     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值