13.2 jspSmartUpload组件中的主要类
在jspSmartUpload组件中主要包含了File、Files、Request和SmartUpload核心类,下面对这些核心类进行介绍。
13.2.1 File类
该类不同于java.io.File类,在编写程序时应注意使用。File类用于保存单个上传文件的相关信息。如上传文件的文件名、文件大小、文件数据等,表13.1列出了File类中的常用方法。
表13.1 File类中的常用方法
方 法
说 明
saveAs()
用于保存文件
isMissing()
用于判断用户是否选择了文件,即表单中对应的<input type="file">标记实现的文件选择域中是否有值。该方法返回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方式保存文件,以便程序的移植。
13.2.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形式返回。
(1)getCollection()方法将所有File对象以Collection的形式返回,以便其他应用程序引用,该方法的具体代码如下:
public Collection getCollection(){
return m_files.values();
}
其中,“m_files”为Files类中的属性,其类型为Hashtable,它存储了所有的File对象。
(2)getEnumeration()方法将所有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 type="text" name="user">,当该表单元素不存在时,返回null
getParameterNames()
获取Form表单中除<input type="file">外的所有表单元素的名称,它返回一个枚举型对象
getParameterValues(String name)
获取Form表单中多个具有相同名称的表单元素的值,该名称由参数name指定,该方法返回一个字符串数组
13.2.4 SmartUpload类
SmartUpload类用于实现文件的上传与下载操作,该类中提供的方法如下。
1.文件上传与文件下载必须实现的方法
在使用jspSmartUpload组件实现文件上传与下载时,必须先实现initialize()方法。在SmartUpload类中提供了该方法的3种形式。
l(1)initialize(ServletConfig config, HttpServletRequest request, HttpServletResponse response)。
l(2)initialize(ServletContext application, HttpSession session, HttpServletRequest request, HttpServletResponse response, JspWriter out)。
l(3)initialize(PageContext pageContext)。
通常应用第三种形式的方法,该方法中的pageContext参数为JSP的内置对象(页面上下文)。
2.文件上传使用的方法
实现文件上传,首先应实现initialize()方法,然后实现如下的两个方法即可将文件上传到服务器中。
l(1)upload()方法。
实现了initialize()方法后,紧接着就应实现该方法。upload()方法用来完成一些准备操作。首先在该方法中调用JSP的内置对象request的getInputStream()方法获取客户端的输入流,然后通过该输入流的read()方法读取用户上传的所有文件数据到字节数组中,然后在循环语句中从该字节数组中提取每个文件的数据,并将当前提取出来的文件的信息封装到File类对象中,最后将该File类对象通过Files类的addFile()方法添加到Files类对象中。
l(2)save()方法。
在实现了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类中可用来限制上传文件和获取其他信息的主要方法。
l(1)setDeniedFilesList(String deniedFilesList)方法。
该方法用于设置禁止上传的文件。其中参数deniedFilesList指定禁止上传文件的扩展名,多个扩展名之间以逗号分隔。若禁止上传没有扩展名的文件,以“,,”表示。例如,setDeniedFilesList("exe,jsp,,bat")表示禁止上传*.exe、*.jsp、*.bat和不带扩展名的文件。
l(2)setAllowedFilesList(String allowedFilesList)方法。
该方法用于设置允许上传的文件。其中参数allowedFilesList指定允许上传文件的扩展名,多个扩展名之间以逗号分隔。若允许上传没有扩展名的文件,以“,,”表示。例如,setAllowedFilesList("txt,doc,,")表示只允许上传*.txt、*.doc和不带扩展名的文件。
l(3)setMaxFileSize(long maxFileSize) ()方法。
该方法用于设定允许每个文件上传的最大长度,该长度由参数maxFileSize指定。
l(4)setTotalMaxFileSize(long totalMaxFileSize)()方法。
该方法用于设置允许上传文件的总长度,该长度由参数totalMaxFileSize指定。
上述的对上传文件进行限制的方法需要在upload()方法之前调用。下面为SmartUpload类中的获取文件信息的方法。
l(1)getSize()方法。
该方法用于获取上传文件的总长度,具体代码如下:
public int getSize(){
return m_totalBytes;
}
其中,m_totalBytes为SmartUpload类中的属性,表示上传文件的总长度,它是在upload()方法中通过调用JSP内置对象request的getContentLength()方法被赋值的。
l(2)getFiles()方法。
获取全部上传文件,以Files对象形式返回。
l(3)getRequest()方法。
获取com.jspsmart.upload.Request对象,然后通过该对象获得上传的表单中其他表单项的值。
3.文件下载使用的方法
l(1)setContentDisposition(String contentDisposition)方法。
该方法用于将数据追加到MIME文件头的CONTENT-DISPOSITION域。参数contentDisposition为要添加的数据。进行文件下载时,将contentDispotition设为null,则组件将自动添加“attachment”,表示将下载的文件作为附件,IE浏览器会弹出“文件下载”对话框,而不是自动打开这个文件(IE浏览器一般根据下载的文件扩展名决定执行什么操作,扩展名为doc的文件将用Word打开)。
l(2)downloadFile()方法。
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”),若该文件名存在当前应用下,则sourceFilePathName=pageContext.getServletContext().getReal Path(sourceFilePathName)
contentType
指定一个文件内容类型(MIME格式的文件类型信息)
destFileName
指定下载的文件另存为的文件名
blockSize
指定存储读取的文件数据的字节数组的大小,默认值为65000
通常使用第一种方法,如果需要更改文件的内容类型,或者更改下载文件另存为的文件名,或者更改用来存储读取的文件数据的字节数组的大小时,可应用后面的3种方法。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jqncc/archive/2008/01/31/2074700.aspx
分享到:
相关推荐
最近实验室做了一个项目,使用jspsmartupload来实现的文件的上传下载,原来在windows平台运行的挺好,但是后来系统移植到linux平台上,结果在上传或下载的文件名中有中文时就会出现乱码。后来查了网上一些人的解决...
**jspSmartUpload源码解析与使用指南** **一、jspSmartUpload简介** ...通过深入理解`jspSmartUpload`的工作原理和使用方法,开发者可以更有效地在项目中集成文件上传功能,为用户提供方便、安全的文件上传体验。
在本文中,我们将深入探讨`jspSmartUpload`的使用方法和关键知识点。 首先,`jspSmartUpload`支持多文件同时上传,这在用户需要一次性上传多个文件时非常有用。它通过HTML表单和JavaScript与服务器端的Java代码交互...
### jspSmartUpload的使用详解 #### 一、概述 jspSmartUpload是由www.jspsmart.com网站开发的一款功能全面的文件上传与下载组件,适用于嵌入到执行上传下载操作的JSP文件中。该组件提供了简便易用的功能,极大地...
**JSpsmartupload组件**是一个基于Java的上传文件解决方案,主要应用于JSP(Java Server Pages)环境中。这个组件提供了一种简单且强大的方式来处理用户通过网页上传的文件。在标题和描述中提到的,该组件的核心是用...
### jspSmartUpload 使用教程 #### 一、安装与配置 **jspSmartUpload** 是一个功能强大的文件上传组件,主要用于简化Java Web应用中的文件上传流程。...掌握这些方法对于高效地使用 jspSmartUpload 组件至关重要。
本文将深入探讨如何使用`jspSmartUpload`来实现这两个功能,并详细解释其工作原理和相关知识点。 首先,`jspSmartUpload`是一个基于Java Servlet的文件上传组件,它提供了一套完整的API来处理文件上传的过程。这个...
`jspSmartUpload` 是一个在JSP(Java Server Pages)环境下广泛使用的上传下载组件,它基于Java技术,提供了强大的文件上传和下载功能。本文将深入探讨`jspSmartUpload`组件的工作原理、主要特性以及如何在实际项目...
标题:“jspSmartUpload.jar包+使用方法” 描述提到:“直接把该包放入你的项目中的lib就可以用了。很方便的。” 在这个描述中,我们谈论的是一个名为“jspSmartUpload.jar”的Java库,它主要用于处理Web应用中的...
使用jspSmartUpload组件在jsp中实现上传和下载 在现代Web开发中,文件上传与下载是常见的需求之一,尤其在企业级应用、个人博客、图片分享等场景中尤为重要。jspSmartUpload作为一款专为JSP设计的文件上传组件,以...
利用jspSmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。 <br>3、能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不...
本文将深入探讨JSPSmartUpload组件的工作原理、使用方法及其核心优势。 JSPSmartUpload组件是基于Java Servlet和JSP技术的,它提供了一套完整的API,使得开发者能够方便地在JSP页面上添加文件上传和下载功能。这个...
2. **创建Servlet**:创建一个继承自JSpsmartUpload的Servlet,重写其`doPost`方法,处理文件上传请求。 3. **配置Servlet**:在web.xml中配置Servlet,指定映射路径。 4. **编写HTML表单**:创建上传表单,设置`...
### jspSmartUpload中类方法跟属性的详细介绍和使用方法 #### 一、简介 `jspSmartUpload`是由www.jspsmart.com网站开发的一款免费、全能的文件上传下载组件,适用于嵌入到JSP文件中执行文件上传和下载操作。本篇...
**JSpsmartupload简介** JSpsmartupload是一个用于Java Web...以上就是关于JSpsmartupload的基本介绍和使用方法,希望对你在进行文件上传功能开发时有所帮助。在实际项目中,你可能需要根据具体需求进行调整和优化。
利用jspSmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。 3、能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不符合要求的...
本文将深入探讨JSP SmartUpload的工作原理、使用方法及其在实际项目中的应用。 1. **JSP SmartUpload简介** JSP SmartUpload是由Eduardo Pires开发的一个开源组件,它基于Commons FileUpload库,提供了一套完整的...
【JSpsmartupload_jsp】是一个关于在Java Web开发中使用JspSmartUpload组件进行文件上传的源码示例。JspSmartUpload是早期广泛应用于JSP(Java Server Pages)中的一个强大且易于使用的文件上传库,它允许用户在Web...
以上就是关于JspSmartUpload组件的基本介绍和使用方法。通过这个组件,开发者可以快速实现稳定、安全的文件上传功能,提高Web应用的用户体验。在实际项目中,结合具体的业务需求,灵活运用JspSmartUpload的API,可以...
JspSmartUpload_UTF8版 增加了一个setCharset()方法 在upload()之前使用 例如: smartUpload = new SmartUpload(); smartUpload.initialize(config, request, response); smartUpload.setCharset("UTF-8"); ...