轻松上传文件

献给建军八十周年

         文件上传在JAVA应用中比较常用,现在也有许多成熟免费的第三方工具如:Commons FileUpload,瀟湘xiaoxiang.fileUpload,O'Reilly cos,smartUpload。个人使用过后感觉前两者效果比较理想,后两者由于种种原因已经停止新版本的开发了。

common-fileupload组件是apache的一个开源项目之一,可以从http://commons.apache.org/fileupload/下载最新版本FileUpload 1.2。该组件简单易用,可实现一次上传一个或多个文件,并可限制文件大小。不足:还欠缺一些相关功能,有待于进一步完善。这个包需要Commons IO的支持,可以在http://commons.apache.org/io/下载最新版本:1.3.2 。在此主要介绍几个关键步骤:

1.创建一个文件工厂 
                               DiskFileItemFactory factory = new DiskFileItemFactory();
2.设置缓冲区大小,10kb
                               factory.setSizeThreshold(1024 * 10);
3.设置临时目录:
                              factory.setRepository(new File(tempPath));
4.创建文件上传对象
                              ServletFileUpload upload = new ServletFileUpload(factory);
5.设置单个上传文件的最大值,10M
                              upload.setFileSizeMax(1024 * 1024 * 10);
6.设置所有文件的最大值,100M
                             upload.setSizeMax(1024 * 1024 * 100);
7.得到所有上传对象
                           List items = upload.parseRequest(request);
8.迭代取出所有数据写入文件
  Iterator iter = items.iterator();
   while (iter.hasNext()) {
    FileItem item = (FileItem) iter.next();
    // 区分数据是否为简单的表单数据
    if (item.isFormField()) {
     // 可以获得简单的表单数据,即除属性为file以外的表单项.以下为表单项的name 和 value
     item.getFieldName() + item.getString();

    } else {
     // 提交的文件,可以得到一些属性
     String fieldName = item.getFieldName();

     // 得到上传文件的大小
     long sizeInBytes = item.getSize();

     // 得到上传文件的全路径和文件名 例:D:\download\Hibernate.rar
     String name = item.getName();

     //处理文件名后得到文件名后缀 \Hibernate.rar
     String filename = name.substring(item.getName()
       .lastIndexOf("\\"), name.length());

     //拼接出新的文件名newPath + filename后创建一个文件对象
     File f = new File(newPath + filename);

     //创建文件
     item.write(f);
    }
   }

xiaoxiang.fileUpload:可以从http://www.xiaoxiang.net/jspupload/main/index.asp 下载最新版2.1

1.支持中文。
2.一次上传多个文件。
3.允许得到上传的文件的原文件名,并可以将文件改名存入服务器。
4.允许设定每次上传文件的总大小,和单个文件的文件大小。
5.可以设定只被允许文件后缀名列表。
6.可以设定只被允许的文件类型列表。(注:从文件格式分析,比只分析后缀名更加准确.)
7.可以设定是否覆盖服务器上同名文件。
8.可以将所有文件上传到一个文件夹,也可以将文件分类存入不同文件夹。

官方有许多教程和例子所以不多做介绍,使用起来还是比较爽手的。

备注:这些第三方工具与现有项目的集成都是非常方便简单,只需将.jar文件放入工程的lib目录下即可。


cos上传组件:
http://www.servlets.com/cos/

附件:
        1.FileUpload中文帮助
        2.由于jspsmart网站已关闭所以相应的下载也就无法得到,所以在附件中我提供了支持中文的jar包和例子喜欢的朋友也可以学习一下和感受一下。

你可能感兴趣的:(apache,Hibernate,应用服务器,asp.net,asp)