了解和掌握好jspSmartUpload组件相关的类是用好这个组件的前提,它主要有4个相关的类:File类、Files类、Request类和SmartUploard类。
jspSmartUpload组件中的File并非JDK中的File类。
1.File类
这个类包装了一个上传文件的所有信息。通过它可以得到上传文件的文件名、文件大小、扩展名及文件数据等信息。它主要有如下几种方法:
(1)saveAs()
用来将文件另存为一个文件,如文件的换名保存。调用方法:
FileOjectName.saveAs(String destFilePathName) 或
FileOjectName.saveAs(String destFilePathName,int saveAsOption)
其中,FileObjectName是生成文件对象的名称;参数destFilePathName是另存为的文件名;参数saveAsOption是另存为的选项,其值有三种,分别是SAVEAS_PHYSICAL, SAVEAS_ VIRTUAL,SAVEAS_AUTO。SAVEAS_PHYSICAL表示以操作系统的根目录为文件根目录的另存文件,SAVEAS_VIRTUAL表示以Web应用程序的根目录为文件根目录的另存文件,SAVEAS_AUTO则表示让组件决定,当Web应用程序的根目录存在另存文件的目录时,它会选择SAVEAS_VIRTUAL,否则会选择SAVEAS_PHYSICAL。如:
FileOjectName.saveAs("/upload/test.doc",SAVEAS_PHYSICAL)
执行后若Web服务器安装在C盘,则另存的文件名实际是c:/upload/test.doc。再如:
FileOjectName.saveAs("/upload/test.doc",SAVEAS_VIRTUAL)
执行后若Web应用程序的根目录是webapps/ROOT,则另存的文件名实际是webapps/ ROOT/upload/test.doc。又如:
FileOjectName.saveAs("/upload/test.doc", SAVEAS_AUTO)
执行时若Web应用程序根目录下存在upload目录,则其效果同saveAs("/upload/ test.doc",SAVEAS_VIRTUAL),否则其效果与如下的语句相同:saveAs("/upload/test.doc", SAVEAS_ PHYSICAL)。
对于Web程序的开发来说,最好使用SAVEAS_VIRTUAL,以方便程序的移植。{#page#]
(2)isMissing()
用于判断用户是否选择了文件,即提交的表单中对应的表单项是否有值,选择了文件时,返回false,未选文件时,返回true。调用方法:
FileOjectName.isMissing()
(3)getFieldName()
得到HTML表单中对应于上传文件的表单项名字。调用方法:
FileOjectName.getFieldName()
(4)getFileName()
取文件名(不含目录信息)。调用方法:
FileOjectName.getFileName()
(5)getFilePathName()
取文件中带目录的全名。调用方法:
FileOjectName.getFilePathName()
(6)getFileExt()
取文件扩展名,即文件名的后缀。调用方法:
FileOjectName.getFileExt()
(7)getSize()
得到文件的长度,单位是字节。调用方法:
FileOjectName.getSize()
(8)getBinaryData()
取文件数据中指定位移处的一个字节,用于检测文件处理。调用方法:
FileOjectName.getBinaryData(int index)
其中参数index表示位移,其值在0到FileOjectName.getSize()-1之间。
2.Files类
Files类表示所有上传文件的集合,通过它可以得到上传文件的数目、大小等信息。有以下方法:
(1)getCount()
取得上传文件的数目。调用方法:
FilesOjectName.getCount()
其中,FilesOjectName是生成的Files类对象的名称。
(2)getFile()
取得指定位移处的文件对象File,实际上是com.jspsmart.upload.File,不是java.io.File,请读者注意区分两者之间的差别。调用方法:
FilesOjectName.getFile(int index)
其中,参数index为指定的位移,其值在0到FilesOjectName.getCount()-1之间。
(3)getSize()
取得上传文件的总长度,可用于限制一次性上传数据量的大小。调用方法:
FilesOjectName.getSize()
(4)getCollection()
将所有上传文件对象以Collection的形式返回,以便其他应用程序引用,浏览上传文件信息。调用方法:
FilesOjectName.getCollection()
(5)getEnumeration()
将所有上传文件对象以Enumeration(枚举)的形式返回,以便其他应用程序浏览上传文件信息。调用方法:
FilesOjectName.getEnumeration()
3.request类
这个类的功能等同于JSP内置的对象request。之所以提供这个类,是因为对于文件上传的表单,通过request对象无法获得表单中文件上传项的值,必须通过jspSmartUpload组件提供的request对象来获取。该类提供如下方法:
(1)getParameter()
获取指定参数的值,当参数不存在时,返回值为null。调用方法:
request.getParameter(String name)
其中,参数name是对应的要获得其值的表单项的名称。
请读者注意区分com.jspsmart.upload.request类与系统的request对象。
(2)getParameterValues()
当一个参数可以有多个值时,用此方法来取其值,它返回的是一个字符串数组,当参数不存在时,返回值为null。调用方法:
request.getarameterValues(String name)
其中,参数name是对应的要获得其值的表单项名称。
(3)getParameterNames()
取得request对象中所有参数的名字,用于遍历所有参数。它返回的是一个枚举型的对象。调用方法:
request.getParameterNames()
4.smartUpload类
这个类完成上传和下载的相关工作。有如下方法:
(1)initialize()
是上传与下载共用的方法。方法执行上传下载的初始化工作,必须第一个执行。其使用格式如下:
smartUploadObjectName.initialize(PageContext pageContext)
该方法无返回值,参数pageContext为JSP页面内置对象,即页面上下文;smartUploadObjectName是生成的smartUpload类对象的名称。
(2)upload()
上传文件使用的方法。用于上传文件数据。对于上传操作,第一步执行initialize方法,第二步执行这个方法。
smartUploadObjectName.upload()
(3)save()
上传文件使用的方法。将全部上传文件保存到指定目录下,并返回保存的文件个数。调用方法:
smartUploadObjectName.save(String destPathName)
或
smartUploadObjectName.save(String destPathName,int option)
其中,参数destPathName为文件保存的目录,option为保存选项,它有三个值,分别是SAVE_PHYSICAL, SAVE_VIRTUAL和SAVE_AUTO。SAVE_PHYSICAL表示组件将文件保存到以操作系统根目录为文件根目录的目录下;SAVE_VIRTUAL表示组件将文件保存到以Web应用程序根目录为文件根目录的目录下;而SAVE_AUTO则表示由组件自动选择,这与File类的saveAs方法的选项值类似。smartUploadObjectName.save(destPathName)作用等同于smartUploadObjectName.save(destPathName,SAVE_AUTO)。
(4)getSize()
上传文件使用的方法。得到上传文件数据的总长度。调用方法:
smartUploadObjectName.getSize()
(5)getFiles()
上传文件使用的方法。取得全部上传文件,以Files对象形式返回,可以利用Files类的操作方法来获得上传文件的数目等信息。调用方法:
smartUploadObjectName.getFiles()
(6)getRequest()
上传文件使用的方法。取得Request对象,以便由此对象获得上传表单参数的值。调用方法:
smartUploadObjectName.getRequest()
(7)setAllowedFilesList()
上传文件使用的方法。设定允许上传带有指定扩展名的文件,当上传过程中有文件名不允许时,组件将抛出异常。调用方法:
smartUploadObjectName.setAllowedFilesList(String allowedFilesList)
其中,参数allowedFilesList为允许上传的文件扩展名列表,各个扩展名之间以逗号分隔。如果想允许上传那些没有扩展名的文件,可以用两个逗号表示。例如:smartUploadObject Name.setAllowedFilesList("doc,txt,,")将允许上传带doc和txt扩展名的文件以及没有扩展名的文件。
(8)setDeniedFilesList()
上传文件使用的方法。用于限制上传带有指定扩展名的文件。若有文件扩展名被限制,则上传时组件将抛出异常。调用方法:
smartUploadObjectName.setDeniedFilesList(String deniedFilesList)
其中,参数deniedFilesList为禁止上传的文件扩展名列表,各个扩展名之间以逗号分隔。如果想禁止上传没有扩展名的文件,可以用两个逗号来表示。例如:smartUploadObject Name.setDeniedFilesList("exe,bat,,")将禁止上传带exe和bat扩展名的文件以及没有扩展名的文件。
(9)setMaxFileSize()
上传文件使用的方法。设定每个文件允许上传的最大长度。调用方法:
smartUploadObjectName.setMaxFileSize(long maxFileSize)
其中,参数maxFileSize为每个文件允许上传的最大长度,单位为字节,当文件超出此长度时,将不能被上传。
(10)setTotalMaxFileSize()
上传文件使用的方法。设定允许上传文件的总长度,用于限制一次性上传的数据量大小。调用方法:
smartUploadObjectName.setTotalMaxFileSize(long totalMaxFileSize)
其中,参数totalMaxFileSize为允许上传文件的总长度,单位为字节。
11)setContentDisposition()
下载文件使用的方法。将数据追加到MIME文件头的CONTENT-DISPOSITION域中。jspSmartUpload组件会在返回下载的信息时自动填写MIME文件头的CONTENT- DISPOSITION域,如果用户需要添加额外信息,请用此方法。调用方法:
smartUploadObjectName.setContentDisposition(String contentDisposition)
其中,参数contentDisposition为要添加的数据。如果contentDisposition为null,则组件将自动添加"attachment;",以表明将下载的文件作为附件,结果是IE浏览器将会提示“另存为”文件,而不是自动打开这个文件。IE浏览器一般根据下载的文件扩展名决定执行的操作,如扩展名为doc将用Word程序打开,扩展名为pdf将用acrobat程序打开,当然客户端要安装有相应的应用软件。
(12)downloadFile()
下载文件使用的方法。用于下载文件。调用方法:
smartUploadObjectName.downloadFile(String sourceFilePathName) 或
smartUploadObjectName.downloadFile(String sourceFilePathName,String contentType) 或
smartUploadObjectName.downloadFile(String sourceFilePathName,String contentType, String destFileName)
其中,第一种方式最常用,后两种用于特殊情况下的文件下载,如更改内容类型,更改另存为的文件名。
参数sourceFilePathName为要下载的文件名,是带目录的文件全名;参数contentType为内容类型(MIME格式的文件类型信息,可被浏览器识别);参数destFileName为下载后默认的另存为的文件名。
jspSmartUpload.jar下载地址:
http://www.blogjava.net/Files/hijackwust/jsmartcom_zh_CN.rar