<form name="ab" method="post" enctype="multipart/form-data"
action="<c:url value='/Apache4UpServlet'/>">
File1:<input type="file" name="img1"/>
<br/>
<input type="submit" value="提交">
</form>
<form name="ab" method="post" enctype="multipart/form-data"
action="<c:url value='/Apache4UpServlet'/>">
File1:<input type="file" name="img1"/>
<br/>
<input type="submit" value="提交">
</form>
<!--上传处理-->
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.err.println("第三个提交。。。。");
request.setCharacterEncoding("UTF-8");
String path = getServletContext().getRealPath("/upload");
DiskFileItemFactory disk = new DiskFileItemFactory();
disk.setRepository(new File("d:/a"));
disk.setSizeThreshold(1024*10);
ServletFileUpload upload = new ServletFileUpload(disk);
upload.setFileSizeMax(1024*1024*80);//设置单个文件的大小
upload.setSizeMax(1024*1024*80);//设置总共文件的大小
try{
FileItemIterator it= upload.getItemIterator(request);
while(it.hasNext()){
FileItemStream stream = it.next();
if(!stream.isFormField()){
String fileName = stream.getName();
fileName = fileName.substring(fileName.lastIndexOf("\\")+1);//a.jpg
String newFileName = UUID.randomUUID().toString().replaceAll("-","");//dsfadfa_a.jpg
fileName = fileName.substring(fileName.lastIndexOf("."));// abcdedfg.jpg--: >=8,<12
newFileName = newFileName+fileName;//afdadfadf_a.jpg
//文件打散
int code = newFileName.hashCode();
int first = code&0xf;
String firstDir = Integer.toHexString(first);
System.err.println("first:"+firstDir);
int second = (code >> 4) & 0xf;//(code & 0xf0)>>4
String secondDir = Integer.toHexString(second);
System.err.println("目录是:"+firstDir+"/"+secondDir);
File file = new File(path+"/"+firstDir+"/"+secondDir);
if(!file.exists()){
file.mkdirs();
}
newFileName=firstDir+"/"+secondDir+"/"+newFileName;
request.setAttribute("fileName",newFileName);
Streams.copy(stream.openStream(),new FileOutputStream(path+"/"+newFileName),true);
}
}
request.getRequestDispatcher("/jsps/show.jsp").forward(request, response);
}catch(Exception e){
e.printStackTrace();
}
}