在做上传的时候,需要一个commons-fileupload-xxx.jar的包。
1、jsp界面中,在表单上面加上 enctype="multipart/form-data" ,确保你的提交是文件提交。
<form action="uploadServlet" enctype="multipart/form-data" method="post" >
<table >
<tr >
<td>
<label>姓名:</label>
<input type="text" id="tname" name="tname">*
<label>手机:</label>
<input type="text" id="tphone" name="tphone">*
</td>
</tr>
<tr >
<td>
<label>
照 片:
</label>
<input id="touxiang" name="touxiang" type="file" />*
</td>
</tr>
<tr >
<td>
<input type="button" name="qcmoney" value="确定">
<td>
</tr>
</table>
</form>
2、创建Teacher类,用来存储
public class Teacher implements Serializable{
private int tId;
private String tName;
private String tPhone;
private String tZhaopian;
........
}
3、创建UploadServlet类
public class UploadServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
Teacher teacher = new Teacher();//这是一个bean类,字段有(姓名,手机,照片)
String path = null;
String fileName = null;
// org.apache.commons.fileupload.DiskFileUpload 是一个开源包里的。
DiskFileUpload du = new DiskFileUpload();
du.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
du.setSizeThreshold(4096);// 设置缓存区大小 ,4 kb;
// up 为 /WebRoot 下的 一个目录
du.setRepositoryPath(this.getServletContext()
.getRealPath("/up"));// 设置缓存目录
// 得到所有文件
try {
List list = du.parseRequest(request);
Iterator it = list.iterator();
while (it.hasNext()) {
org.apache.commons.fileupload.FileItem fileItem = (FileItem) it
.next();
// 是否为表单元素。如文本框 等等。
if (fileItem.isFormField()) {
String name = fileItem.getFieldName();
//通过流 用来读取表单元素里的内容。
java.io.BufferedReader br = new BufferedReader(
new InputStreamReader(fileItem.getInputStream()));
//如果还有除文件域以外的其他表单元素 就用 if()进行名字一一匹配。
if(name.equals("tname")){
String tname = fileItem.getString("UTF-8");
teacher.setTName(tname);
}else if(name.equals("tphone")){
String tphone = fileItem.getString("UTF-8");
teacher.setTPhone(tphone);
}
}
// 文件域
else {
// 获得文件名,这个文件名包括路径:
fileName = fileItem.getName();
int index = fileName.lastIndexOf('.');
fileName = fileName.substring(index);
fileName = this.getFileName() + fileName;
//文件保存位置
path = request.getSession().getServletContext().getRealPath("/img")+ "/" + fileName;
System.out.println("path="+fileName);
fileItem.write(new File(path));
System.out.println("上传成功");
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PrintWriter out = response.getWriter();
out.flush();
out.close();
}
// 以日期 获得一个文件名。(不重复);
public String getFileName() {
java.util.Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int mon = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DATE);
int hour = cal.get(Calendar.HOUR);
int min = cal.get(Calendar.MINUTE);
int sec = cal.get(Calendar.SECOND);
int mi = cal.get(Calendar.MILLISECOND);
return "" + year + mon + day + hour + min + sec + mi;
}
}
4、在web.xml中进行配置servlet。