Java中关于文件上传的基本处理方法Commons-FileUpload

     在Java中,关于文件上传,有好多种处理方法,在此,只是介绍Apache的FileUpload组件的基本用法。

    在原来的Commons-FileUpload版本中,即1.2版本之前,是如下处理上传的:

      DiskFileUpload  fileUpload  =   new  DiskFileUpload();
      
// 设置允许用户上传文件大小,单位:字节
    fileUpload.setSizeMax( 500 * 1024 * 1024 );
      
// 设置最多允许在内存中存储的数据,单位:字节
    fileUpload.setSizeThreshold( 10 * 1024 * 1024 );
      
// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
   
// 在进行文件上传的时候文件先存再内存中,然后才会存到server上,但是如果内存放不下那么大的文件
   
// 就必须用硬盘上的 一个临时文件夹来保存这个文件的部分,然后转存
   
// 现在默认的文件存储的路径是
   String tempPath = " e://...... " ;
      
    
// 设置上传文件的名字
    String fileName  =   "" ;
    String uploadFilename
= "" ;
    String pp
= "" :

 
try {
       List  fileItems 
= fileUpload.parseRequest(request);
       Iterator iterator 
= fileItems.iterator();
       
while(iterator.hasNext()){
            FileItem fileItem 
= (FileItem)iterator.next();
            
if (fileItem.isFormField()){
                
if(fileItem.getFileldName().equals("xxxx")){
                       fileName 
= fileItem.getString();
                  
try {
                             fileName
= new String(fileName.getBytes("ISO-8859-1"),"gb2312");
                   }
 catch (UnsupportedEncodingException e) {
                            e.printStackTrace();
                       }

                }

            }
else{
                    String strName 
= fileItem.getName();
                    uploadFileName 
= strName.substring(strName.lastIndexOf("/")+1, strName.length());
                    
long size = fileItem.getSize();
                    
if((strName==null||strName.equals("")) && size==0)
                          
continue;
                   pp
=uploadFileName.substring(uploadFileName.lastIndexOf("."),uploadFileName.length());
                   File savedFile 
= new File(uploadPath +datelog+pp );
                   fileItem.write(savedFile);
             }

         }

    }
catch () {
   }

    

     以上是1.2版本之前的用法,到了1.2版本之后,已经不再使用DiskFileUpload这种方法了,而改用  DiskFileItemFactory这种访问方法,具体的改进如下:

 

      DiskFileItemFactory factory  =   new  DiskFileItemFactory();
      
// 设置内存最大值,50M
      factory.setSizeThreshold( 50 * 1000 * 1000 );
     
// 设置临时空间,当上传内容大于最大内存值时
   factory.setRepository( new  File(temp));
      
      ServletFileUpload upload 
=   new  ServletFileUpload(factory);
      
// 设置上传最大限制500M
       upload.setSizeMax( 500 * 1000 * 1000 );

     除此之外,其他的地方几乎没有什么大的改变,故在此不贴出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值