文件上传的核心几大步骤:
String savePath=this.getServletContext().getRealPath("/WEB-INF/upload");
File file=new File(savePath);
if(!file.exists() && !file.isDirectory()){
system.out.pritln("文件目录")+savePaht+"不存在";
file.mkdir();
}
1.得到上传文件的保存目录。这时需要判断此目录是否已经存在,如果不存在需要创建。file.mkdir();
String message="";
2
2.1创建一个DiskFileItemFactory对象DiskFileItemFactory factory=new DiskFileItemFactory();
2.2创建文件上传解析器ServletFileUpload upload=new ServletFileUpload(factory);
2.3解决上传文件名中文乱码的问题upload.setHeaderEncoding("UTF-8");
2.4判断提交的数据是否是上传表单里的数据
if(!ServletFileUpload.isMultipartContent(request)){
//按照传统方式获取数据
return;
}
2.5使用ServletFileUpload解析器解析上传的数据,解析结果返回的是是一个List<FileItem>
List<FileItem> list=upload.parseRequest(request);
for(FileItem item:list){
//如果FileItem里的是普通输入项的数据
if(item.isFormFiled(){
String name=item.getFiledName();
//解决普通输入项的中文乱码问题
String value=item.getString("UTF-8");
system.out.pritln(name+"="+value);
}else{
//如果FileItem里面封装的是上传文件,先得到上传文件的名称
String fileName=item.getName();
system.out.println(fileName);
if(fileName==null||fileName.trim().equals(""){
continue;
}
fileName=fileName.subString(fileName.lastIndexOf("\\")+1;
InputStream in=item.getInputStream();
FileOutputStream fos=new FileOutputStream(savePath+"\\"+fileName);
int len=0;
byte buffer[]=new byte[1024];
//从输入流里将数据读到缓冲区
while((len=in.read(buffer))>0){
//通过输出流将缓冲区的数据写到指定目录
fos.write(buffer,0,len);
}
in.close();
fos.close();
//删除处理文件时产生的临时文件
item.delete();
message="文件上传成功";
}
String savePath=this.getServletContext().getRealPath("/WEB-INF/upload");
File file=new File(savePath);
if(!file.exists() && !file.isDirectory()){
system.out.pritln("文件目录")+savePaht+"不存在";
file.mkdir();
}
1.得到上传文件的保存目录。这时需要判断此目录是否已经存在,如果不存在需要创建。file.mkdir();
String message="";
2
2.1创建一个DiskFileItemFactory对象DiskFileItemFactory factory=new DiskFileItemFactory();
2.2创建文件上传解析器ServletFileUpload upload=new ServletFileUpload(factory);
2.3解决上传文件名中文乱码的问题upload.setHeaderEncoding("UTF-8");
2.4判断提交的数据是否是上传表单里的数据
if(!ServletFileUpload.isMultipartContent(request)){
//按照传统方式获取数据
return;
}
2.5使用ServletFileUpload解析器解析上传的数据,解析结果返回的是是一个List<FileItem>
List<FileItem> list=upload.parseRequest(request);
for(FileItem item:list){
//如果FileItem里的是普通输入项的数据
if(item.isFormFiled(){
String name=item.getFiledName();
//解决普通输入项的中文乱码问题
String value=item.getString("UTF-8");
system.out.pritln(name+"="+value);
}else{
//如果FileItem里面封装的是上传文件,先得到上传文件的名称
String fileName=item.getName();
system.out.println(fileName);
if(fileName==null||fileName.trim().equals(""){
continue;
}
fileName=fileName.subString(fileName.lastIndexOf("\\")+1;
InputStream in=item.getInputStream();
FileOutputStream fos=new FileOutputStream(savePath+"\\"+fileName);
int len=0;
byte buffer[]=new byte[1024];
//从输入流里将数据读到缓冲区
while((len=in.read(buffer))>0){
//通过输出流将缓冲区的数据写到指定目录
fos.write(buffer,0,len);
}
in.close();
fos.close();
//删除处理文件时产生的临时文件
item.delete();
message="文件上传成功";
}
}
在Web.xml文件中注册UploadHandleServlet