jspSmarUpload组件中的主要类

来源:互联网 发布:连续剧 容祖儿 知乎 编辑:程序博客网 时间:2024/05/22 00:09

在jspSmartUpload组件中主要包含了File、Files、Request和SmartUpload核心类

1、File类

File类不同于java.io.File类,在编写程序时应注意使用。File类用于保存单个文件的相关信息。如上传文件的文件名、文件大小、文件数据等。

方法 说明 saveAs() 该方法用于保存文件 isMissing() 该方法用于判断用户是否选择了文件,即表单中对应的标记实现的文件选择域中是否有值。该方法返回boolean型值。 getFiledName() 获取Form表单中当前上传文件所对应的表单项的名称 getFileName() 获取文件的文件名,该文件名不包含目录 getFileExt() 获取文件的扩展名,即后缀,不包含”.”符号 getContentType() 获取文件MIME类型,如”text/plain” getContentString() 获取文件的内容,返回String型 getSize() 获取文件的大小,单位字节,返回int型 getBinaryData(int index) 返回值为byte,获取文件数据中参数index指定位置处的一个字节

File类中提供了两种形式的saveAs()方法:

1、saveAs(String destFilePathName)

destFilePathName参数用于指定文件保存的路径,包含文件名。其值应以”/”开头

2、saveAs(String destFilePathName,int optionSaveAs)

optionSaveAs参数用于指定保存目标选项,该选项有三个值,分别是:

1.SAVEAS_AUTO -> 0

saveAs(“/files/myfile.txt”,File.SAVEAS_AUTO)或saveAs(“/files/myfile.txt”,0)
如果FileUpDown应用根目录下存在‘files’子目录,则以SAVEAS_VIRTUAL方式保存文件,否则以SAVEAS_PHYSICAL方式保存文件

2.SAVEAS_VIRTUAL -> 1

saveAs(“/files/myfile.txt”,File.SAVEAS_VIRTUAL)或saveAs(“/files/myfile.txt”,1)
如果FileUpDown应用下存在’files’子目录,则将上传的文件以”myfile.txt”为文件名进行保存,实际的保存路径为”E:\Tomcat\webapps\FileUpDown\files\myfile.txt”
如果不存在’files’子目录,则抛出异常

3.SAVEAS_PHYSICAL -> 2

saveAs(“/files/myfile.txt”,File.SAVEAS_PHYSICAL)或saveAs(“/files/myfile.txt”,2)
由于Tomcat安装在E盘,因此,若E盘更目录下存在’files’子目录,则将上传的文件以”myfile.txt”为文件名进行保存,实际的保存路径为”E:\file|myfile.txt”.
如果E盘根目录不存在’files’子目录,而FileUpDown应用的根目录下存在’files’子目录,则抛出异常

2、Files类

Files类存储了所有上传的文件,通过类中的方法可活得上传文件的数量和总长度等信息。

方法 说明 getCount() 获取上传文件的数目,返回为int型 getSize() 获取上传文件的总长度,单位为字节,返回值为long型 getFile(int index) 获取参数index指定位置处的com.jspsmart.upload.File对象 getCollection() 将所有File对象一Collection形式返回 getEnumeration() 将所有File对象以Enumeration形式返回

3、Request类

设置该类的目的是因为当Form表单实现文件上传时,通过JSP内置对象request的getParameter()方法无法获取其他表单项的值,所以提供了该类来获取

方法 说明 getParameter(String name) 获取Form表单中有参数指定的表单元素的值 getParameterNames() 获取Form表单中 除 外所有表单元素的名称,返回一个枚举型对象 getParameterValues(String name) 获取Form表单中多个具有相同名称的表单元素的值,该名称由name指定,返回一个字符串数组

4、SmartUpload类

1)在使用jspSmartUpload组件实现文件上传与下载时,必须先实现initialize()方法。

1.initialize(ServletConfig config,HttpServletRequest request,HttpServletResponse response)。
2.initialize(ServletContext application,HttpServletRequest request,HttpServletResponse response)
3.initialize(PageContext pageContext)

2)upload()方法

实现了 initialize()方法后,紧接着应事先upload()方法,用来完成一些准备操作。首先在该方法中调用JSP内置对象request的getInputSteam()方法获取客户的输入流,然后通过该输入流的read()方法读取用户上传的所有文件数据到字节数组中,再次在循环语句中从该字节数组中提取每个文件的数据,并将当前提取出的文件信息封装到File类对象中,最后将该File类对象通过Files类的addFile()方法添加到Files类对象中。

3)save()方法

在实现了initialize()方法和upload()方法后,通过调用该方法就可以将全部上传文件保存到指定目录下,并返回保存的文件个数。

save(String destPathName)->save(String destPathName,0)

save(String destPathName,int option)

实际上,在SmartUpload类中的save()方法中最终是调用File类中的saveAs()方法保存文件。

4)SmartUpload类中用来限制上传文件和获取其他信息的主要方方法。

1.setDeniedFilesList(String deniedFilesList)方法

指定禁止上传文件的扩展名,如setDeniedFilesList(“exe,jsp,bat”)

2.setAllowedFilesList(String allowedFilesList)方法

指定允许上传文件的扩展名

3.setMaxFileSize(long maxFileSize)

4.setTotalMaxFileSize(long totalMaxFileSize)

设置允许上传文件的总长度。

上面介绍的对文件进行限制的方法,需要在uploa()方法之前调用。

文件下载使用的方法

1、setContentDisposition(String contentDisposition)

该方法用于将追加到MIME文件头的CONTENT-DISPOSITION域。参数contentDisposition为要添加的数据。进行文件下载时,将contentDisposition设为null,则组件将自动添加”attachment”,表示将下载的文件作为 附件 ,IE浏览器会弹出“文件下载”对话框,而不是自动打开这个文件。

2、downloadFile()

1.downloadFile(String sourceFilePathName)2.downloadFile(String sourceFilePathName,String contentType)3.downloadFile(String sourceFilePathName,String contentType,String destFileName)4.downloadFile(String sourceFilePathName,String contentType,String destFilePathName,int blockSize)
0 0