ahxu-commons-upload-beta2显进度上传组件beta2发布

原创 2004年10月29日 22:42:00

ahxu-commons-fileuploadex-beta1及相关内容先参见http://blog.csdn.net/ahxu/archive/2004/08/17/76997.aspx

ahxu-commons-fileuploadex-beta2的改动:

1.重写了内部实现结构,使运行更省资源,更稳定。

2.修正一些bug,接口做了一些调整,使之应用更简单!

说明:

ahxu-commons-fileuploadex-beta1中的接口依然保留,但有些不建议再使用,将在正式版中取消,现在依然保留是为了与前一版本兼容,现在用户依然可以使用,建议新用户不要使用!

一、ahxu-commons-fileuploadex-beta2的安装:

1.下载apache的commons-fileupload-1.0组件
下载地址:http://apache.linuxforum.net/dist/jakarta/commons/fileupload/binaries/commons-fileupload-1.0.zip
2. 下载ahxu的ahxu-commons-fileuploadex-beta2组件
下载地址:http://groups.google.com/group/ahxu/msg/77718b0a680bdee0下载JUbeta2.rar
后解压出.jar文件
3. 将此二个.jar文件放入一个已配置好的web应用的WEB-INF/lib目录下,例如:test/WEB-INF/lib

二、ahxu-commons-fileuploadex-beta2的测试:

1.下载应用测试代码upload2-jsp.rar,下载地址http://groups.google.com/group/ahxu/msg/77718b0a680bdee0下载upload2-jsp.rar后解压放在此web应用的根目录,例如:test/
2.运行测试upload.jsp,要求IE5.0以上,例如:http://127.0.0.1/test/upload.jsp
3.选择一个或二个大点儿的文件,最好几百M,然后上传,上传过程中会弹出一个进度对话框,如图

4.文件上传完毕后将显示上传结果,进度对话框自动关闭。


三、有用的upload2-jsp.rar:

upload2-jsp.rar中包含的4个文件:upload.jsp、receive.jsp、progressbar.jsp、progressdetail.jsp

1.upload.jsp——文件上传表单页面;
此页面包含了文件上传的form表单,当然也可以是你的应用中任何你喜欢的有文件上传form表单的页面。此页面在submit时调用javascript函数uploadBegin()弹出进度显示对话框(显示progressbar.jsp);你也可以根据需要自己定制,例如不用对话框,用iframe等。但form的onSubmit时要调用uploadBegin(),如:

<script language="javascript">
function uploadBegin(){
theFeats = "height=200,width=320,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no";
strAppVersion = navigator.appVersion;
if (document.uploadForm.file1.value != "")
{
if (strAppVersion.indexOf('MSIE') != -1 && strAppVersion.substr(strAppVersion.indexOf('MSIE')+5,1) > 4)
{
winstyle = "dialogWidth=320px; dialogHeight:200px; center:yes";
window.showModelessDialog(<%="/""+response.encodeURL("progressbar.jsp")+"/""%>,window,winstyle);
}
}
}
</script>

<form action=<%="/""+response.encodeURL("receive.jsp")+"/""%> enctype="multipart/form-data" method="post" name="uploadForm" id="uploadForm" onsubmit="uploadBegin();">

2.receive.jsp——文件上传接收页,即服务器端接收上传数据并处理上传数据的页面,可以用servlet来代替;

<%

List fileItemList=null;
/*创建组件*/
DiskFileUploadEx fu = new DiskFileUploadEx();
/*设置允许上传的最大值,超过此值将不进行上传*/
fu.setSizeMax(1024*1000*1000);
/*设置设允许上传的文件类型*/
fu.setAllowFiles(".txt;.jpg;.rm;.rmvb;.htm");

try{
/*执行上传过程,并得到上传后文件列表*/
fileItemList=fu.parseRequestEx(request);

Iterator fileItemListIte=fileItemList.iterator();
while(fileItemListIte.hasNext())
{
FileItem file=(FileItem)fileItemListIte.next();
out.println(file.getName()+"<br>");
}
out.println("上传成功");
}catch (Exception e){
out.println("上传失败<br>");
out.println(e.getMessage());
/*显示不被允许上传的文件列表 begin*/
if(e instanceof DiskFileUploadEx.InvalidFileUploadException){
out.println("<p>以下文件不被允许:</p>");
Iterator unAllowFileS=((DiskFileUploadEx.InvalidFileUploadException)e).getInvalidFileList().iterator();
while(unAllowFileS.hasNext()){
out.println((String)unAllowFileS.next()+"<br>");
}
/*显示不被允许上传的文件列表 end */
}

}
finally{
/*上传完成后的清理工作*/
fu.dispose();
}
%>

3.progressbar.jsp——文件上传进度显示页,如图1;
你也可以根据自己的需要定制自己样式的进度显示页面。
4.progressdetail.jsp——文件上传进度数据读取页,用来构造上传进度信息,供progressbar.jsp读取显示,无需修改

四、简单应用部署的总结:
1.下载安装apache的commons-fileupload-1.0组件及ahxu-commons-fileuploadex-beta2组件;
2.编辑上传表单文件,注意要复制upload.jsp的uploadBegin(),以及form表单的onsubmit="uploadBegin();"
3.复制progressbar.jsp、progressdetail.jsp无需修改;
4.根据需要编辑receive.jsp页的内容。

五、ahxu.commons.upload.DiskFileUploadEx 的扩展应用接口

ahxu.commons.upload
Class DiskFileUploadEx

java.lang.Object
  |-org.apache.commons.fileupload.FileUploadBase
      |-org.apache.commons.fileupload.DiskFileUpload
          |-ahxu.commons.upload.DiskFileUploadEx
 
public class DiskFileUploadEx
extends org.apache.commons.fileupload.DiskFileUpload

DiskFileUploadEx类继承自org.apache.commons.fileupload.DiskFileUpload,以下所列应用接口均为原org.apache.commons.fileupload.DiskFileUpload没有的接口,而有原相关内容请参见org.apache.commons.fileupload文档,

Method Summary
void clear(javax.servlet.http.HttpServletRequest req)
Deprecated. 同dispose,原beta1中使用,建议不要使用
void dispose()
上传后清理工作
java.lang.String getAllowFiles()
得到允许上传的文件类型
int getReportLimitSize()
boolean isAllowField()
得到是否允许上载除file以外的field的设置开关值
java.util.List parseRequestEx(javax.servlet.http.HttpServletRequest req)
parseRequest的扩展,完成上传操作 根据allowField值决定是否接收除file以外的其它field,并检查上传的文件是否为允许的文件
java.util.List parseRequestExSessionReport(javax.servlet.http.HttpServletRequest req)
Deprecated. 同parseRequestEx,原beta1中使用,建议不要使用
void setAllowField(boolean allow)
设置开关值,是否允许上载除file以外的field的内容
void setAllowFiles(java.lang.String allowFiles)
设置允许上传的文件类型,默认是null,可以上传任何类型
void setReportLimitSize(int reportLimitSize)
设置最小报告长度,这个参数影响报告频度,默认是10K

FAQ:

1.如何从beta1升级beta2?

答:

1).下载beta2并安装。

2).下载upload2-jsp.rar 用其中的 progressdetail.jsp覆盖原beta1的同名文件。

3).其它可不变,也可将原接收代码内的parseRequestExSessionReport替换成parseRequestEx,将clear(javax.servlet.http.HttpServletRequest req) 替换成dispose()

2.示例代码并没有保存文件到硬盘或数据库,我该怎么保存?

答:这方面的内容为org.apache.commons.fileupload组件的应用内容,网上相关的内容有很多,这里就不在累述了。

 

Plupload上传插件使用

Pluload插件上传功能。
  • mr_caoshuai
  • mr_caoshuai
  • 2017年03月07日 16:32
  • 454

多文件上传带进度条的

多文件上传有时候要求带进度条显示,现在我就和大家分享一款这样的插件uploadify。         首先先到官网下载最新的zip压缩包http://www.uploadify.com。    ...
  • fengyhj
  • fengyhj
  • 2012年12月12日 14:33
  • 3060

Node.js学习(五)——npm如何发布自己的组件包

Node.js学习(五)——npm如何发布自己的组件包
  • flygoa
  • flygoa
  • 2016年11月09日 16:29
  • 777

php+uploadprogress实现上传进度功能

文件上传进度反馈, 这个需求在当前是越来越普遍, 比如大附件邮件. 在PHP5.4以前, 我们可以通过APC提供的功能来实现. 或者使用PECL扩展uploadprogress来实现. 虽然说, 它...
  • bjx18356163055
  • bjx18356163055
  • 2016年02月13日 16:41
  • 625

图片上传后回显,支持多张图片上传

修改了uploadify的封装,增加了上传的适用范围。 不要小看每一个努力的小人物,没有什么是不可能的 将每一件事情做到极致,尽自己最大的能力去做好,做的更全面。了解每一件事的原理和功能 1.j...
  • qq_19244423
  • qq_19244423
  • 2015年08月20日 15:40
  • 2359

OKHttp上传图片实现,进度监听

1.为了实现图片进度监听,需要定义一个类,继承RequestBody/** * Created by krubo on 2016/2/17. */ public abstract class Cm...
  • krubo1
  • krubo1
  • 2016年02月24日 14:23
  • 2979

html5通过ajax上传文件并显示进度

通过ajax上传文件,需要用到一个html5新特性——FormData(兼容性:chrome,ff,IE9及以上) FormData顾名思义,就是用于存放Form的数据信息的类,它是一个不透明的类,对...
  • victorygod
  • victorygod
  • 2014年02月21日 12:09
  • 3795

OkHttp实现文件上传进度

文件上传就一个没刻度的进度条在那里转怎么行,本篇带你实现上传进度,为你的进度条添加刻度吧,啥都不说了,重点重写RequestBody,看代码import com.squareup.okhttp.*; ...
  • djk_dong
  • djk_dong
  • 2015年09月02日 15:43
  • 9808

使用HttpURLConnection上传文件,进度条显示不正确

用传统方法使用HttpURLConnection进行上传时,进度条显示过快,达到100%之后会卡很长时间,其实此时还在上传。这是因为HttpURLConnection自己维护的一个缓存,先把要上传的数...
  • rnZuoZuo
  • rnZuoZuo
  • 2017年05月04日 14:16
  • 915

使用IHttpAsyncHandler实现带进度条的文件上传

asp.net中实现带进度显示的文件上传功能有很多选择,比如:Html5 XMLHttpRequest2、第三方控件、flash插件等等。本文介绍使用IHttpAsyncHandler对象实现进度显示...
  • taoerchun
  • taoerchun
  • 2016年04月05日 18:27
  • 1401
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ahxu-commons-upload-beta2显进度上传组件beta2发布
举报原因:
原因补充:

(最多只允许输入30个字)