上传文件代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean status = false;
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File(path));
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> list = (List<FileItem>) upload.parseRequest(request);
for (FileItem item : list) {
String name = item.getFieldName();
if(item.isFormField()){
//表单普通字段信息
String value = item.getString();
System.out.println(value);
}else {
//处理图片
String value = item.getName();
//索引到最后一个反斜杠
int start = value.lastIndexOf("\\");
//截取 上传文件的 字符串名字,加1是 去掉反斜杠
String filename = value.substring(start + 1);
item.write(new File(path,filename));
item.delete();
}
}
status = true;
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
request.getRequestDispatcher("index.jsp").forward(request, response);
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean status = false;
DiskFileItemFactory factory = new DiskFileItemFactory();
//文件上传到的路径
String path = request.getServletContext().getRealPath("/upload");
factory.setRepository(new File(path));
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> list = (List<FileItem>) upload.parseRequest(request);
for (FileItem item : list) {
String name = item.getFieldName();
if(item.isFormField()){
//表单普通字段信息
String value = item.getString();
System.out.println(value);
}else {
//处理图片
String value = item.getName();
//索引到最后一个反斜杠
int start = value.lastIndexOf("\\");
//截取 上传文件的 字符串名字,加1是 去掉反斜杠
String filename = value.substring(start + 1);
item.write(new File(path,filename));
item.delete();
}
}
status = true;
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
request.getRequestDispatcher("index.jsp").forward(request, response);
}
问题发现:
以前猜测是目录被锁的原因,但实际是new File(path,filename),在new 一个新文件时,filename 是个空字符串。
所以出错。