第一次写博客,不知道如何下手,就随意的写点吧。
核心代码就是这样,感觉内部实现应该很吊,只有以后慢慢去体会了
try{
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");//解决上传文件名的中文乱码
if(!upload.isMultipartContent(request)){
return;
}
List<FileItem> list = upload.parseRequest(request);
for(FileItem item : list){
if(item.isFormField()){
//是普通输入项
String name = item.getFieldName();
String value = item.getString("UTF-8");
//value = new String(value.getBytes("iso8859-1"),"UTF-8");//乱码转义,request编码无效。只能手工转化
System.out.println(name+" "+value);
}else{
String filename = item.getName();//不同浏览器提交的文件是不一样的
filename = filename.substring(filename.lastIndexOf("\\")+1);
InputStream in = item.getInputStream();
String saveFilename = makeFileName(filename);//文件保存名称
FileOutputStream out = new FileOutputStream(savePath + "\\" + saveFilename);
byte buffer[] = new byte[1024];
int len = 0;
while((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
in.close();
out.close();
}
}
}catch(Exception e){
e.printStackTrace();
}
}