在做上傳的時候,需要一個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。