准备jar包:commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
在jsp页面form表单属性必须是:enctype="multipart/form-data" method="post",
在servlet中代码为
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
String storePath = getServletContext().getRealPath("files");
DiskFileItemFactory factory = new DiskFileItemFactory();// 设置环境
boolean isMulti = ServletFileUpload.isMultipartContent(request);// 判断form是否是enctype="multipart/form-data"
if (!isMulti) {
System.out.println("不能上传文件!");
return;
}
ServletFileUpload upload = new ServletFileUpload(factory);// 核心类
List<FileItem> lists = upload.parseRequest(request);
for (FileItem fileItem : lists) {//遍历form字段
if (fileItem.isFormField()) {
// 普通字段
String fileName = fileItem.getFieldName();
String value = fileItem.getString();
System.out.println(fileName + "==" + value);
} else {
// 上传字段
InputStream in = fileItem.getInputStream();
String fileName = fileItem.getName();
fileName = fileName
.substring(fileName.lastIndexOf("\\") + 1);// 防止在某些浏览器上取出的fileName是文件的全路径,只取文件名
String storeFile = storePath + "\\" + fileName;
OutputStream os = new FileOutputStream(storeFile);
byte[] b = new byte[1024];
int len = -1;
while ((len = in.read()) != -1) {
os.write(b, 0, len);
}
os.close();
in.close();
}
}
} catch (FileUploadException e) {
throw new RuntimeException("服务器繁忙...");
}
}
转载于:https://blog.51cto.com/lvsazf/1406551