专业做网站建设的,wordpress使用视频教程,网上seo研究,建设银行网站安全分析jspSmartUpload组件中的主要类 在jspSmartUpload组件中主要包含了File、Files、Request和SmartUpload核心类#xff0c;下面对这些核心类进行介绍。 1 File类 该类不同于java.io.File类#xff0c;在编写程序时应注意使用。File类用于保存单个上传文件的相关信息。如上传文件… jspSmartUpload组件中的主要类 在jspSmartUpload组件中主要包含了File、Files、Request和SmartUpload核心类下面对这些核心类进行介绍。 1 File类 该类不同于java.io.File类在编写程序时应注意使用。File类用于保存单个上传文件的相关信息。如上传文件的文件名、文件大小、文件数据等表13.1列出了File类中的常用方法。
表13.1 File类中的常用方法
方 法 说 明 saveAs() 用于保存文件 isMissing() 用于判断用户是否选择了文件即表单中对应的input typefile标记实现的文件选择域中是否有值。该方法返回boolean型值选择了文件时返回False否则返回True getFieldName() 获取Form表单中当前上传文件所对应的表单项的名称 getFileName() 获取文件的文件名该文件名不包含目录 getFilePathName() 获取文件的文件全名获取的值是一个包含目录的完整文件名 getFileExt() 获取文件的扩展名即后缀名不包含“.”符号 getContentType() 获取文件MIME类型如“text/plain” getContentString() 获取文件的内容返回值为String型 getSize() 获取文件的大小、单位字节返回值为int型 getBinaryData(int index) 返回值为byte获取文件数据中参数index指定位置处的一个字节用于检测文件等处理
Files类中的saveAs()方法用于保存文件在File类中提供了两种形式的saveAs()方法
ll saveAs(String destFilePathName)方法。
ll saveAs(String destFilePathName, int optionSaveAs)方法。
这两个方法没有返回值第一种形式与saveAs(destFilePathName, 0)执行效果相同。
参数说明
l destFilePathName指定文件保存的路径包括文件名。其值应以“/”开头。
l optionSaveAs保存目标选项。该选项有3个值分别是SAVEAS_AUTO、SAVEAS_ VIRTUAL和SAVEAS_PHYSICAL。它们是File类中的静态字段分别表示整数0、1和2。将optionSaveAs参数设为 SAVEAS_VIRTUAL选项值则通知jspSmartUpload组件以Web应用的根目录为文件根目录然后加上 destFilePathName参数指定的路径来保存文件设为SAVEAS_PHYSICAL值则一种情况是通知jspSmartUpload组件 将以Web服务器的安装路径中的磁盘根目录为文件根目录然后加上destFilePathName参数指定的路径来保存文件另一种情况则以 destFilePathName参数指定的目录为最终目录来保存文件设为SAVEAS_AUTO值则首先以SAVEAS_VIRTUAL方式来保存 文件若Web应用下由destFilePathName参数指定的路径不存在则以SAVEAS_PHYSICAL方式保存文件。
例如若Web服务器以Tomcat为例的安装目录为“E:/Tomcat 5.5”当前Web应用为“FileUpDown”下面分别应用这3个选项保存文件。
1使用SAVEAS_VIRTUAL选项值。
saveAs(/file/myfile.txt,File.SAVEAS_VIRTUAL)或saveAs(/file/myfile.txt,1)
若FileUpDown应用下存在“file”子目录则将上传的文件以“myfile.txt”为文件名进行保存实际的保存路径如下
E:/Tomcat 5.5/webapps/FileUpDown/file/myfile.txt
若不存在“file”子目录则抛出下面的异常
This path does not exist (1135)
2使用SAVEAS_PHYSICAL选项值。
saveAs(/file/myfile.txt,File.SAVEAS_PHYSICAL)或saveAs(/file/myfile.txt,2)
因为Tomcat 5.5安装在E盘因此若E盘根目录下存在“file”子目录则将上传的文件以“myfile.txt”为文件名进行保存实际的保存路径如下
E:/file/myfile.txt
若E盘根目录下不存在“file”子目录而FileUpDown应用的根目录下存在“file”子目录则抛出下面的异常
The path is not a physical path
否则抛出下面的异常
This path does not exist (1135)
使用SAVEAS_PHYSICAL选项值时可以将上传的文件保存到由destFilePathName参数指定的一个具体的目录下例如
saveAs(D:/temp/myfile.txt,File.SAVEAS_PHYSICAL)
最终文件的实际保存路径如下
D:/temp/myfile.txt
3使用SAVEAS_AUTO选项值。
saveAs(/file/myfile.txt,File.SAVEAS_AUTO)或saveAs(/file/myfile.txt,0)
若FileUpDown应用根目录下存在“file”子目录则以SAVEAS_VIRTUAL方式保存文件否则以SAVEAS_PHYSICAL方式保存文件。
通常情况下应使用SAVEAS_VIRTUAL方式保存文件以便程序的移植。 2 Files类 该类存储了所有上传的文件通过类中的方法可获得上传文件的数量和总长度等信息。表13.2列出了Files类中的常用方法。
表13.2 Files类中的常用方法
方 法 说 明 getCount() 获取上传文件的数目返回值为int型 getSize() 获取上传文件的总长度单位字节返回值为long型 getFile(int index) 获取参数index指定位置处的com.jspsmart.upload.File对象 getCollection() 将所有File对象以Collection的形式返回 getEnumeration() 将所有File对象以Enumeration形式返回
Files类中的getCollection()方法和getEnumeration()方法将所有的File对象分别以Collection和Enumeartion形式返回。
1getCollection()方法将所有File对象以Collection的形式返回以便其他应用程序引用该方法的具体代码如下
public Collection getCollection(){ return m_files.values();
}
其中“m_files”为Files类中的属性其类型为Hashtable它存储了所有的File对象。
2getEnumeration()方法将所有File对象以Enumeration形式返回以便其他应用程序引用该方法的具体代码如下
public Enumeration getEnumeration(){ return m_files.elements();
}
其中“m_files”为Files类中的属性其类型为Hashtable它存储了所有的File对象。
13.2.3 Request类 因为当Form表单用来实现文件上传时通过JSP的内置对象request的getParameter()方法无法获取其他表单项的值所以提供了该类来获取Request类中提供了表13.3所示的方法。
表13.3
Request类中的常用方法
方 法 说 明 getParameter(String name) 获取Form表单中由参数name指定的表单元素的值如input typetext nameuser当该表单元素不存在时返回null getParameterNames() 获取Form表单中除input typefile外的所有表单元素的名称它返回一个枚举型对象 getParameterValues(String name) 获取Form表单中多个具有相同名称的表单元素的值该名称由参数name指定该方法返回一个字符串数组 4 SmartUpload类 SmartUpload类用于实现文件的上传与下载操作该类中提供的方法如下。
1文件上传与文件下载必须实现的方法
在使用jspSmartUpload组件实现文件上传与下载时必须先实现initialize()方法。在SmartUpload类中提供了该方法的3种形式。
l1initialize(ServletConfig config, HttpServletRequest request, HttpServletResponse response)。
l2initialize(ServletContext application, HttpSession session, HttpServletRequest request, HttpServletResponse response, JspWriter out)。
l3initialize(PageContext pageContext)。
通常应用第三种形式的方法该方法中的pageContext参数为JSP的内置对象页面上下文。
2文件上传使用的方法
实现文件上传首先应实现initialize()方法然后实现如下的两个方法即可将文件上传到服务器中。
l1upload()方法。
实现了initialize()方法后紧接着就应实现该方法。upload()方法用来完成一些准备操作。首先在该方法中调用JSP的内置对象 request的getInputStream()方法获取客户端的输入流然后通过该输入流的read()方法读取用户上传的所有文件数据到字节数组 中然后在循环语句中从该字节数组中提取每个文件的数据并将当前提取出来的文件的信息封装到File类对象中最后将该File类对象通过Files类 的addFile()方法添加到Files类对象中。
l2save()方法。
在实现了initialize()方法和upload()方法后通过调用该方法就可以将全部上传文件保存到指定目录下并返回保存的文件个数。该方法具有以下两种形式。
① save(String destPathName)。
② save(String destPathName, int option)。
第一个方法等同于save(destPathName,0)或save(destPathName,File. SAVE_AUTO)。
实际上在SmartUpload类的save()方法中最终是调用File类中的saveAs()方法保存文件的所以save()方法中的参数使 用与File类的saveAs()方法中的参数使用是相同的。但在save()方法中option参数指定的保存选项的可选值为SAVE_AUTO、 SAVE_VIRTUAL和SAVE_PHYSICAL。它们是SmartUpload类中的静态字段分别表示整数0、1和2。
仅仅通过以上的3个方法就实现了文件的上传。下面介绍SmartUpload类中可用来限制上传文件和获取其他信息的主要方法。
l1setDeniedFilesList(String deniedFilesList)方法。
该方法用于设置禁止上传的文件。其中参数deniedFilesList指定禁止上传文件的扩展名多个扩展名之间以逗号分隔。若禁止上传没有扩展 名的文件以“,,”表示。例如setDeniedFilesList(exe,jsp,,bat)表示禁止上 传*.exe、*.jsp、*.bat和不带扩展名的文件。
l2setAllowedFilesList(String allowedFilesList)方法。
该方法用于设置允许上传的文件。其中参数allowedFilesList指定允许上传文件的扩展名多个扩展名之间以逗号分隔。若允许上传没有扩 展名的文件以“,,”表示。例如setAllowedFilesList(txt,doc,,)表示只允许上传*.txt、*.doc和不带扩展 名的文件。
l3setMaxFileSize(long maxFileSize) ()方法。
该方法用于设定允许每个文件上传的最大长度该长度由参数maxFileSize指定。
l4setTotalMaxFileSize(long totalMaxFileSize)()方法。
该方法用于设置允许上传文件的总长度该长度由参数totalMaxFileSize指定。
上述的对上传文件进行限制的方法需要在upload()方法之前调用。下面为SmartUpload类中的获取文件信息的方法。
l1getSize()方法。
该方法用于获取上传文件的总长度具体代码如下
public int getSize(){ return m_totalBytes;
}
其中m_totalBytes为SmartUpload类中的属性表示上传文件的总长度它是在upload()方法中通过调用JSP内置对象request的getContentLength()方法被赋值的。
l2getFiles()方法。
获取全部上传文件以Files对象形式返回。
l3getRequest()方法。
获取com.jspsmart.upload.Request对象然后通过该对象获得上传的表单中其他表单项的值。 3文件下载使用的方法
l1setContentDisposition(String contentDisposition)方法。
该方法用于将数据追加到MIME文件头的CONTENT-DISPOSITION域。参数contentDisposition为要添加的数据。进 行文件下载时将contentDispotition设为null则组件将自动添加“attachment”表示将下载的文件作为附件IE浏览器 会弹出“文件下载”对话框而不是自动打开这个文件IE浏览器一般根据下载的文件扩展名决定执行什么操作扩展名为doc的文件将用Word打开。
l2downloadFile()方法。
downloadFile()方法实现文件下载SmartUpload类中提供了4种形式的downloadFile()方法如下所示。
① downloadFile(String sourceFilePathName) 。
② downloadFile(String sourceFilePathName, String contentType) 。
③ downloadFile(String sourceFilePathName, String contentType, String destFileName) 。
④ downloadFile(String sourceFilePathName, String contentType, String destFileName, int blockSize)。
downloadFile()方法中的参数及说明如表13.4所示。
表13.4 downloadFile()方法中的参数及说明
参 数 说 明 sourceFilePathName 指定要下载文件的文件名可带目录如 “/file/myfile.txt”或“E:/file/myfile.text”若该文件名存在当前应用下则 sourceFilePathNamepageContext.getServletContext().getReal Path(sourceFilePathName) contentType 指定一个文件内容类型MIME格式的文件类型信息 destFileName 指定下载的文件另存为的文件名 blockSize 指定存储读取的文件数据的字节数组的大小默认值为65000
通常使用第一种方法如果需要更改文件的内容类型或者更改下载文件另存为的文件名或者更改用来存储读取的文件数据的字节数组的大小时可应用后面的3种方法。