,该方法顺利完成后,临时文件有可能会被清除。
该方法也可将普通表单字段内容写入到一个文件中,但它主要用途是将上传的文件内容保存在本地文件系统中。
其完整语法定义如下:public void writeFile file5.getString 方法getString 方法用于将 FileItem 对象中保存的主体内容作为一个字符串返回,它有两个重载的定义形式:public java.lang.String getStringpublic java.lang.String getStringjava.lang.String encodingthrows java.io.UnsupportedEncodingException前者使用缺省的字符集编码将主体内容转换成字符串,后者使用参数指定的字符集编码将主体内容转换成字符串。
如果在读取普通表单字段元素的内容时出现了中文乱码现象,请调用第二个 getString 方法,并为之传递正确的字符集编码名称。
6. getContentType 方法getContentType 方法用于获得上传文件的类型,对于图 1.3 中的第三个分区所示的描述头,getContentType 方法返回的结果为字符串“image/gif”,即“Content-Type”字段的值部分。
如果 FileItem 类对象对应的是普通表单字段,该方法将返回 null。
getContentType 方法的完整语法定义如下:public String getContentType7. isInMemory 方法isInMemory 方法用来判断 FileItem 类对象封装的主体内容是存储在内存中,还是存储在临时文件中,如果存储在内存中则返回 true,否则返回false。
其完整语法定义如下:public boolean isInMemory8. delete 方法delete 方法用来清空 FileItem 类对象中存放的主体内容,如果主体内容被保存在临时文件中,delete 方法将删除该临时文件。
尽管 Apache 组件使用了多种方式来尽量及时清理临时文件,但系统出现异常时,仍有可能造成有的临时文件被永久保存在了硬盘中。
在有些情况下,可以调用这个方法来及时删除临时文件。
其完整语法定义如下:public void delete1.2.4 FileUploadException 类在文件上传过程中,可能发生各种各样的异常,例如网络中断、数据丢失等等。
为了对不同异常进行合适的处理,Apache 文件上传组件还开发了四个异常类,其中 FileUploadException 是其他异常类的父类,其他几个类只是被间接调用的底层类,对于 Apache 组件调用人员来说,只需对FileUploadException 异常类进行捕获和处理即可。
1.2.5 文件上传编程实例下面参考图 1.2 中看到的示例代码编写一个使用 Apache 文件上传组件来上传文件的例子程序。
:动手体验:使用 Apache 文件上传组件(1)在lttomcat 安装目录gtwebappsfileupload 目录中按例程 1-1 编写一个名为 FileUpload.html 的 HTML 页面,该页面用于提供文件上传的 FORM表单,表单的 enctype 属性设置值为“multipart/form-data”,表单的 action 属性设置为“servlet/UploadServlet”。
例程 1-1 FileUpload.htmllthtmlgtltheadgtlttitlegtupload experimentlt/titlegtltmeta http-equivquotContent-Typequot contentquottext/html charsetgb2312quotgtlt/headgtltbodygtlth3gt测试文件上传组件的页面lt/h3gtltform actionquotservlet/UploadServletquotenctypequotmultipart/form-dataquot methodquotpostquotgt作者:ltinput typequottextquot namequotauthorquotgtltbrgt来自:ltinput typequottextquot namequotcompanyquotgtltbrgt文件 1:ltinput typequotfilequot namequotfile1quotgtltbrgt文件 2:ltinput typequotfilequot namequotfile2quotgtltbrgtltinput typequotsubmitquot valuequot上载quotgtlt/formgtlt/bodygtlt/htmlgt2在lttomcat 的安装目录gtwebappsfileuploadsrc 目录中按例程 1-2 创建一个名为 UploadServlet.java 的 Servlet 程序,UploadServlet.java调用 Apache 文件上传组件来处理 FORM 表单提交的文件内容和普通字段数据。
例程 1-2 UploadServlet.javaimport java.io.import javax.servlet.import javax.servlet.http.import org.apache.commons.fileupload.import java.util.public class UploadServlet extends HttpServletpublic void doPostHttpServletRequest requestHttpServletResponse response throws Servl