使用表单提交文件

    当使用表单中需要上传文件时,即存在type="file" 的Input标签,那么表单就不能使用传统的request方式提交,需要借助第三方工具。比如在tomcat服务器中提供了一种fileUpload组件。在工程中引入相关的jar包:commons-fileupload-1.2.1.jar和commons-io-1.4.jar即可调用。

这里要注意三点:

1:表单必须是post的方式来提交

2:表单的文件上传项(type="file"的input控件),必须设置name属性和值。

3:表单必须设置enctype属性值为:multipart/form-data。

例:regist.jsp表单提交数据到Regist.java这个Servlet进行处理。

regist的表单要写成如下格式:

<form action="Regist" method="post" enctype="multipart/form-data">...<input type="file" name="upload">...</form>

在相应的处理页,此处为Regist.java这个Servlet,需要进行如下工作:

1:创建一个磁盘文件项工厂对象,它是FileUpload组件中的一个对象。

DiskFileItemFactory dff = new DiskFileItemFactory();

2:创建一个核心解析类,用来处理从客户端发送来的请求

ServletFileUpload sfu = new ServletFileUpload(dff);

3:解析request请求。每一个表单控件生成一个FileItem对象,返回FileItem对象的List集合

List<FileItem> list = sfu.parseReauest(request);  //当然此处的request为传到方法中的参数。

4:遍历集合,获得每个FileItem,判断是表单项还是文件上传项,进行对应的操作。

for( FileItem fi : list ){

    if( fi.isFormField() ){

    String name = fi.getFileName();        //    获取表单项的name属性值

    String value = fi.getString("UTF-8");        //获取表单项的值,按utf-8进行编码解码。

}else{...}

}

 

猜你喜欢

转载自blog.csdn.net/wargon/article/details/80581458