文件上传需要用到阿帕奇的commons-fileupload.jar组件,本帖带有附件
将commons-fileupload.jar导入WEB-INF/lib下
Servlet类,记住要在XML中作相应的配置。
保存路径为该项目下temp路径
public class Upload extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
parseRequest(request);
}
public HashMap parseRequest(HttpServletRequest request) {
HashMap<String,String> paramMap = new HashMap<String,String>();
DiskFileUpload dfu = new DiskFileUpload(); //获取文件上传处理对象.
dfu.setSizeMax(1024 * 1024 * 100);//设置允许上传文件大小上限.
dfu.setSizeThreshold(4096);//设置缓冲区大小.
dfu.setRepositoryPath(this.getServletContext().getRealPath("/temp/buffer"));//设置临时文件夹.
try {
List list = dfu.parseRequest(request);//解析request.
Iterator it = list.iterator();
while (it.hasNext()) {
FileItem fi = (FileItem) it.next();
if (fi.isFormField()) {//如果是普通文本.
paramMap.put(fi.getFieldName(), fi.getString());
} else {//否则是文件.
String tmpFileName = "";
if (!fi.getName().equals("")) {// 如果有传文件.
tmpFileName = FileName.getRndFileName(fi.getName());
//将文件保存到服务器.
fi.write(new File(this.getServletContext().getRealPath("/temp/" + tmpFileName)));
}
paramMap.put(fi.getFieldName(), tmpFileName);
} }
} catch (Exception e) { e.printStackTrace(); }
return paramMap;
}
}
JSP中的上传构建,将表单提交到之前Servlet的地址
<body>
<form name="myform" id="myform" action="./servlet/fileupload" method="post" enctype="multipart/form-data">
File:<br>
<input type="file" name="myfile"><br>
<br>
<input type="submit" name="submit" value="Commit">
</form>
</body>