标签来实现上传的情况,存在着严重的性能问题,因为用户提交了文件之后,在浏览器把文件上传到服务器的过程中,界面看上去似乎是静止的,如果是小文件还好些,如果不"> 标签来实现上传的情况,存在着严重的性能问题,因为用户提交了文件之后,在浏览器把文件上传到服务器的过程中,界面看上去似乎是静止的,如果是小文件还好些,如果不" />
欢迎来到天天文库
浏览记录
ID:29466325
大小:309.54 KB
页数:41页
时间:2018-12-20
《ajaxjsp实现基于web的文件上传的进度控制说明书》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、1. 引言 基于浏览器的文件上传,特别是对于通过标签来实现上传的情况,存在着严重的性能问题,因为用户提交了文件之后,在浏览器把文件上传到服务器的过程中,界面看上去似乎是静止的,如果是小文件还好些,如果不幸需要上传的是几兆、几十兆甚至上百兆的文件,我相信那是一种非常痛苦的体验,我们中间的很多人应该都有过此种不堪的经历。(一笑) 现在我就针对这个问题给出一个解决方案,我们将实现一个具有监控能力的WEB上传的程序——它不仅把文件上传到服务器,而且"实时地"监视文件上传的实际过程。解决方案的基本思路是这样的:· 在Form提交上传文件同时,
2、使用AJAX周期性地从Servlet轮询上传状态信息· 然后,根据此信息更新进度条和相关文字,及时反映文件传输状态· 如果用户取消上传操作,则进行相应的现场清理工作:删除已经上传的文件,在Form提交页面中显示相关信息· 如果上传完毕,显示已经上传的文件内容(或链接)在介绍源代码之前,我们先来看看程序运行界面: 2. 实现代码 实现代码想当然的有服务器端代码和客户端代码(呵呵),我们先从服务器端开始。 2.1. 服务器端代码 2.1.1. 文件上传状态类(FileUploadStatus)39 使用FileUploadStatus这个类记录文件上传状态,并将其作
3、为服务器端与web客户端之间通信的媒介,通过对这个类对象提供上传状态作为服务器回应发送给web客户端,web客户端使用JavaScript获得文件上传状态。源代码如下:/***本例程演示了通过Web上传文件过程中的进度显示。您可以对本例程进行任何修改和使用。*如果需要转载本例程,请您注明作者。**作者:刘作晨*EMail:liuzuochen@gmail.com*/packageliuzuochen.sample.upload;importjava.util.*;publicclassFileUploadStatus{//上传用户地址privateStringuploadA
4、ddr;//上传总量privatelonguploadTotalSize=0;//读取上传总量privatelongreadTotalSize=0;//当前上传文件号privateintcurrentUploadFileNum=0;//成功读取上传文件数privateintsuccessUploadFileCount=0;//状态privateStringstatus="";//处理起始时间privatelongprocessStartTime=0l;//处理终止时间privatelongprocessEndTime=0l;//处理执行时间privatelongproces
5、sRunningTime=0l;//上传文件URL列表privateListuploadFileUrlList=newArrayList();//取消上传privatebooleancancel=false;//上传base目录privateStringbaseDir="";publicFileUploadStatus(){}publicStringgetBaseDir(){returnbaseDir;}39publicvoidsetBaseDir(StringbaseDir){this.baseDir=baseDir;}publicbooleangetCancel(){r
6、eturncancel;}publicvoidsetCancel(booleancancel){this.cancel=cancel;}publicListgetUploadFileUrlList(){returnuploadFileUrlList;}publicvoidsetUploadFileUrlList(ListuploadFileUrlList){this.uploadFileUrlList=uploadFileUrlList;}publiclonggetProcessRunningTime(){returnprocessRunningTime;}publicvo
7、idsetProcessRunningTime(longprocessRunningTime){this.processRunningTime=processRunningTime;}publiclonggetProcessEndTime(){returnprocessEndTime;}publicvoidsetProcessEndTime(longprocessEndTime){this.processEndTime=processEndTime;}publiclonggetProcessStartTime(){
此文档下载收益归作者所有