博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用apache的文件上传及进度条实现
阅读量:7095 次
发布时间:2019-06-28

本文共 1895 字,大约阅读时间需要 6 分钟。

首先需要两个jar包commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar,通过他们可以实现文件的上传及进度条的实现,本人感觉经典之处,在于在上传过程中的监听器的实现。

一  首先创建一个类,对要传递的信息进行封装,包括文件总大小,已上传大小,已用时间等等。

二 创建监听器,要实现一个接口ProgressListener位于org.apache.commons.fileupload中,这个接口会对文件上传的所有信息进行监听。监听器中得到的信息用刚刚创建的类进行封装

三 在文件上传请求servlet的时候对监听器进行上传,这其中又会用到几个类。

     ServletFileUpload,DiskFileItemFactory,通过ServletFileUpload创建的对象设置两个属性setHeaderEncoding和setProgressListener

然后就可以对文件进行处理了。包括对文件的流的控制,以及对当前的监听器发送到session中以便时时请求更新监听器的信息。

1 Class UploadPojo2    private Long startTime=System.currentTimeMillis();3    private Long totalSize;4    private Long uploadSize;5 set......get
1 public class UpLoadListener implements ProgressListener{ 2     private UploadPojo upload =null; 3     public UpLoadListener(UploadPojo upload){ 4         this.upload =upload; 5     } 6     @Override 7     public void update(long uploading, long totalsize, int count) { 8      upload.setUpload_size(uploading);         9      upload.setTotal_size(totalsize);10     }11 12 }
public class FileFormSubmit extends  HttpServlet{   init();....    doGet();....   上传文件用post方法    doPost(HttpServletRequest req, HttpServletResponse resp){   resp.setContentType("text/html");   UploadPojo  upload=new UploadPojo();   UploadListener listener=new UploadListener(upload);   这个类是关键,对    ServletFileUpload servlet_fileUpload=new ServletFileUpload(new DiskFileItemFactory());   servlet_fileUpload.setProgressListener(listener);   servlet_fileUpload.setHeaderEncoding("utf-8");    req.getSession().setAttribute("upload",upload);    需要 trycatch...     对requests对象进行解析,并把表单中的每一个输入项包装成一个fileItem         List list=servlet_fileUpload.parseRequest(req);    for (Iterator iteator=list.iterator;iterator.hasNext()){    FileItem fileItem=iterator.Next();    if(fileItem.isFormField()){    break;        } .....后面可以对文件进行流的操作了,从copy }}  }

 

转载于:https://www.cnblogs.com/lovebaoqiang/archive/2013/01/06/FileUpload.html

你可能感兴趣的文章
WebStorm 之 Cordova 环境搭建
查看>>
Linux笔记
查看>>
Java并发编程_wait/notify和CountDownLatch的比较(三)
查看>>
固态硬盘(Solid State Drives)
查看>>
鹅厂优文|主播pk,如何实现无缝切换?
查看>>
Building an (awesome) API with NancyFX 2.0 + Dapper
查看>>
崔永元手撕范冰冰,小崔凭什么能赢?
查看>>
一个老鸟发的公司内部整理的 Android 学习路线图
查看>>
mount过程分析之一(基于3.16.3内核)【转】
查看>>
AnswerOpenCV一周佳作欣赏(0615-0622)
查看>>
AI金融知识自学偏量化方向-目录0
查看>>
加载的问题
查看>>
添加个人专栏
查看>>
MYSQL的存储过程和函数简单写法
查看>>
使用LXD搭建Web网站
查看>>
推荐两个小工具MediaInfo 和 netpersec
查看>>
php课程 12-42 php中类的关键字有哪些
查看>>
转载:Systemd 服务配置文件
查看>>
ECSHOP后台权限分配原理分析
查看>>
Java代码自动部署
查看>>