ahxu-commons-fileuploadex-beta1及相关内容先参见http://blog.youkuaiyun.com/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"> <form action=<%="/""+response.encodeURL("receive.jsp")+"/""%> enctype="multipart/form-data" method="post" name="uploadForm" id="uploadForm" οnsubmit="uploadBegin();"> |
2.receive.jsp——文件上传接收页,即服务器端接收上传数据并处理上传数据的页面,可以用servlet来代替;
<% List fileItemList=null; try{ Iterator fileItemListIte=fileItemList.iterator(); } |
3.progressbar.jsp——文件上传进度显示页,如图1;
你也可以根据自己的需要定制自己样式的进度显示页面。
4.progressdetail.jsp——文件上传进度数据读取页,用来构造上传进度信息,供progressbar.jsp读取显示,无需修改
四、简单应用部署的总结:
1.下载安装apache的commons-fileupload-1.0组件及ahxu-commons-fileuploadex-beta2组件;
2.编辑上传表单文件,注意要复制upload.jsp的uploadBegin(),以及form表单的οnsubmit="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组件的应用内容,网上相关的内容有很多,这里就不在累述了。