apache文件上传,目录打散

 <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();
		}
		
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值