首先需要下载并导入common-fileupload和common-io连个jar包,然后将要提交的表单method设置为post,并且添加enctype属性,属性值为:multipart/form-data
其中上传图片的标签为<input type="file" name="picpath">
下面看具体的代码:
<%@ page language="java" contentType="text/html; charset=utf-8" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<form action="doAdd.jsp" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>用户姓名:</td>
<td><input type="text" name="username"/></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text" name= "password"/></td>
</tr>
</table>
<input type="file" name="picPath"/>
<input type="submit" value="提交" />
</form>
</body>
</html>
然后看处理的JSP页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.io.*,java.util.*,org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'doAdd.jsp' starting page</title>
</head>
<body>
<%
//String uploadFilePath = request.getSession().getServletContext().getRealPath("/upload/" );
//检查请求类型
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
//当enctype="multipart/form-data"并且method是post时,isMultipart为真
if(isMultipart){
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
//转换请求对象
List<FileItem> items = null;
items=upload.parseRequest(request);
Iterator<FileItem> iterator = items.iterator();
while(iterator.hasNext()){
FileItem item = iterator.next();
//保存上传文件
if(item.isFormField()){
//处理普通文本字段
String fieldName = item.getFieldName();
if(fieldName.equals("username")){
out.print(item.getString());
}else if(fieldName.equals("password")){
out.print(item.getString());
}
}else{
File fullfile = new File(item.getFieldName());
File uploadfile = new File("f:/image/",item.getFieldName());
item.write(uploadfile);
}
}
}
%>
</body>
</html>