`
zxz_java
  • 浏览: 83908 次
社区版块
存档分类
最新评论

轻松上传文件

阅读更多

献给建军八十周年

         文件上传在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包和例子喜欢的朋友也可以学习一下和感受一下。

分享到:
评论

相关推荐

    [SHOPEX]文件上传插件

    考虑到易用性,插件应该设计简洁直观的用户界面,使商家和消费者都能轻松上传文件。 10. 适应性与兼容性: 为了满足不同用户的需求,插件需兼容各种浏览器和设备,包括移动设备上的文件选择和上传。 通过【下载...

    net_edit.rar_上传下载文件_文件_文件下载

    net_edit提供了友好的界面,让用户能够轻松上传文件,支持多种文件格式。上传过程中,可能采用了断点续传技术,即使网络不稳定也能确保文件完整上传。下载则需确保安全性和速度,可能采用HTTP/HTTPS协议,同时提供...

    hapi-upload:在您的 Hapi.js 应用程序中轻松上传文件

    hapi-upload [即将推出!... :sunrise: 在您的 Hapi.js 应用程序中轻松上传文件 我们正在将我们在 Meteor 中所做的工作移植到 Hapi.js: ://github.com/ideaq/image-uploads 如果你想帮助建立这个,请说出来!

    DropIt是一个用nodejs构建的文件上传器Uploader

    DropIt是一款基于Node.js开发的文件上传工具,它旨在提供简单、高效的文件上传服务,让用户能够轻松上传文件并获取分享链接。在这个项目中,开发者利用了Node.js的非阻塞I/O模型和丰富的生态系统,实现了高效的数据...

    轻松实现超大文件分片上传.zip

    本文将详细解析如何轻松实现超大文件的分片上传,并讨论相关的关键知识点。 首先,理解“分片上传”的概念是至关重要的。大文件分片上传是指将一个大的文件拆分成若干个小的块或“片”,每个片单独上传,然后在...

    通过Arduino IDE向闪存文件系统上传文件

    4. **上传文件**:在 Arduino IDE 中,有一个特殊的工具可以帮助你上传文件到 SPIFFS。在 "Sketch" 菜单中选择 "Export Compiled Binary" 生成固件,然后使用 ESP8266FS 或 ESP32FS 工具将文件打包到固件中。之后,...

    ajax上传文件案例

    它使得开发者能够轻松地在后台处理文件上传,同时保持用户界面的交互性和无刷新特性。以下是对这个知识点的详细说明: 1. **文件选择**:在HTML页面中,我们可以添加一个`<input type="file">`元素,让用户选择要...

    go gin web框架文件上传,可以使用curl进行上传文件

    c.JSON(400, gin.H{"status": "error", "message": "未找到上传文件"}) } }) r.Run(":8080") // 启动服务 } ``` 在这个例子中,我们定义了一个POST路由`/upload`,该路由接收一个名为`file`的表单字段,代表...

    多文件上传和展示

    总的来说,Bootstrap-fileinput提供了一个强大且易于定制的多文件上传解决方案,通过合理的配置和事件处理,可以轻松地集成到各种Web项目中。同时,配合后端服务器的处理,能够实现安全、高效的文件上传功能。

    Layui实现文件上传进度条

    要实现文件上传进度条,我们需要使用到Layui的AjaxUpload组件,该组件可以用来上传文件并显示上传进度。我们可以使用`layui.upload`方法来上传文件,并使用`on`方法来监听上传进度。 例如: ```javascript layui....

    bootstrap 文件上传组件 fileinput 实现文件批量上传

    Bootstrap文件上传组件FileInput是一...通过上述内容,你应该对Bootstrap File Input组件有了全面的认识,能够轻松实现文件批量上传的功能。实践中,根据具体项目需求调整配置,就能打造出用户体验优秀的文件上传功能。

    使用jsch中的ChannelSftp上传文件和文件夹[参考].pdf

    使用 JSCH 中的 ChannelSftp 上传文件和文件夹 JSCH(Java Secure Channel)是一款自由和开源的 Java 库,提供了安全的通信通道,包括 SSH、SFTP、SCP 等协议。 ChannelSftp 是 JSCH 中的一个实现 SFTP 协议的 ...

    C#实现文件上传

    本文将深入探讨如何使用C#来实现文件上传,并重点关注以下几个方面:如何利用C#进行多文件上传、如何控制上传文件的大小、以及如何设置上传文件的格式限制等。 #### 二、基础知识准备 1. **ASP.NET**: ASP.NET是...

    文件上传jar文件

    这三个库的结合使用,使得开发人员能够轻松地构建一个功能完备的文件上传系统,包括验证文件类型、大小,处理多文件上传,以及有效地存储和管理上传的文件。在实际开发中,这些库经常与Servlet、Spring MVC等Web框架...

    带有进度指示通知的后台轻松上传文件(开箱即用的Multipart / Binary / FTP)-Android开发

    red_heart:Contributing:person_raising_hand:功能:person_raising_hand:谁在使用Upload Service:megaphone:Credits:scroll:许可功能Android 5.0(API 21)到Android 10(API) 29)支持微小的库上传文件到具有FTP,...

    flash 实现的多文件上传

    在Web应用程序中,传统的HTML表单仅支持单个文件上传,而Flash通过其ActionScript编程语言和灵活的API,可以轻松地处理多个文件的选择和上传。这个功能通常涉及到以下几个关键知识点: 1. **ActionScript**:...

    uploadify 批量上传文件

    本文将深入探讨Uploadify的工作原理、主要特点以及如何在项目中实现批量上传文件。 ### Uploadify的工作原理 Uploadify基于Flash和HTML5技术,通过JavaScript与服务器端进行通信。它利用浏览器的File API,允许...

Global site tag (gtag.js) - Google Analytics