在apache组织众多的项目中,fileupload是使用比较频繁的一个项目.java程序员可以使用它完成文件的上传.协同完成任务的是io包,下面来看一个例子.
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// step1.创建一个工厂类的实例,该实例为解释器提供了缺省的配置.
DiskFileItemFactory dfi = new DiskFileItemFactory();
// step2.创建一个解析器
ServletFileUpload sfu = new ServletFileUpload(dfi);
// step3.使用解析器解析
try {
List<FileItem> list = sfu.parseRequest(request);
// step4.遍历items集合
for (FileItem item : list) {
if (item.isFormField()) {
System.out.println(item.getString());
} else {
ServletContext context = getServletContext();
String path = context.getRealPath("upload");
String fileName = item.getName();
File file = new File(path + "\\" + fileName);
item.write(file);
out.println("成功上传!");
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.close();
}
String path=context.getRealPath("upload")这一句是得到硬盘上对应的实际路径.
判断一个参数域是普通的表单输入域,还是文件上传域,如果该方法返回真的话,则是前者,如果为假,则是后者。
后者的下,相应的域做相应的文件上传处理。
本例讲到这里也没什么好说的,自己练去吧!