servlet文件上传基本模式

第一步:

DiskFileItemFactory fiFactory = new DiskFileItemFactory();创建用于解析文件的工厂类,同时设置缓冲区的位置和大小
  fiFactory.setSizeThreshold(1024*8);//8K  
  fiFactory.setRepository(new File("d:/a"));

 

第二步:

ServletFileUpload upload = new ServletFileUpload(fileFactory); //建文件上传的类并设置解析文件的工厂类。
  upload.setFileSizeMax(1024*1024*5);//设置每个文件最大为5M
  upload.setSizeMax(1024*1024*8);//所有上传文件大小之和的最大值,此处设最多能上传8M

   List<FileItem> list = upload.parseRequest(request);/获得提交上来的文件

第三步:

     String fileName = fi.getName();//文件名

    //文件名不能用中文,必须转换成ascii码的格式,而且文件名不能重复(必须保证唯一),因此采用UUID来实现
     String newFileName = UUID.randomUUID().toString().replace("-", "");
     newFileName =newFileName+ext;
     
     //☆打散目录(因为对于普通机器,一个文件夹如果存储的文件个数超过1000,性能将会急剧下降!! )
     String dir1 = Integer.toHexString( fileName.hashCode() & 0xf );
     String dir2 = Integer.toHexString( (fileName.hashCode() & 0xf0)>>4 );
     File dir = new File(path+"/"+dir1+"/"+dir2 );
     if(!dir.exists()){
      dir.mkdirs();
     }
     File file = new File(path+"/"+dir1+"/"+dir2+"/"+newFileName);
     
     fi.write(file);

    if(fi!=null){//finally 清临时文件

    fi.delete(); 

  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值