说明:
这个类基本解决了上一贴的上一贴说的存在的bug和不足。主要做了如下修正。
- 用户可以设定文件上传的路径,这里没有用request对象的getRealPath方法来取得相对路径,而是用了绝对路径。是一个小败笔。因为有时候用户只是得到服务器的一个应用,而不知道整个服务器的路径。但是既然getRealPath自己可以得到,用户自己取得也可以。
- 在文件上传处理的时候,预先进行了check,把一些可能出现的造成上传失败的情况拍查掉。避免该类出现不该出现的异常。
- 捕获了IO异常,避免文件上传的时候出现异常时程序的不友好表现
- 提供了方法返回form表单中其他参数的取得,模拟了HttpServletRequest对象的getParameter和getParameters方法(后面这个方法是叫这个名字么-_-b),取得Parameter的名称的方法没有提供,是个小缺陷。
- 提供了方法返回上传的文件的件数和上传的文件名,方便用户作其他操作。
现在介绍下JSP页面中如何用这个类实现上传。
首先,要把这个类编译后的class文件拷贝到WEB-INF/classes/目录下。注意保持package的结构。
在jsp页面中引用这个类
<%@page import="com.vogoal.util.JspFileUpload"%>
<% //初始化 JspFileUpload jfu = new JspFileUpload(); //设定request对象 jfu.setRequest(request); //设定上传的文件路径 jfu.setUploadPath("C:\\"); //上传处理 int rtn = jfu.process(); //取得form中其他input控件参数的值 String username = jfu.getParameter("username"); //如果对应同一个参数有多个input控件,返回数组 String[] usernameArr = jfu.getParameters("username"); //取得上传的文件的名字 String[] fileArr = jfu.getUpdFileNames(); //取得上传文件的个数,这个方法有点鸡肋 int fileNumber = jfu.getUpdFileSize(); //下面的是测试输出的代码。 // out.println("parameter:" + username); // out.println("parameter size:" + usernam |