SmartUpload组件分析

了解和掌握好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为下载后默认的另存为的文件名。

你可能感兴趣的:(Web,应用服务器,jsp,浏览器,IE)