一.概述

文件上传是网站非常常用的功能,直接使用Servlet获取上传文件还得解析请求参数,比较麻烦,所以一般选择采用apache的开源工具,common-fileupload.这个jar包可以再apache官网上面找到,也可以在struts的lib文件夹下面找到,struts上传的功能就是基于这个实现的。common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。然后导入到你的项目路径下面

文件上传有许多中实现的方案:

  • 页面表单 + RFC1897规范 + http协议上传
  • 页面控件(flash/html5/activeX/applet) + RFC1897规范 + http协议上传
  • 页面控件(flash/html5/activeX/applet) + 自定义数据规范 + http协议上传
  • 页面控件(flash/html5/activeX/applet) + FTP协议上传
  • 页面控件(flash/html5/activeX/applet) + 自定义协议

用apache common upload组件实际就是采用的“页面表单 + RFC1897规范 + http协议上传”实现方式,需要实现的技术点:

1. 多文件数据的提交

2. 文件数据包接收存储功能

3. 文件数据上传进度

4. WEB页面无刷新异步提交

二.上传过程

三.common-fileupload类结构

四.总结

虽然使用apache common upload组件实现了文件上传,但是从上传的效果来看,并不是一个很完美的解决方案。有如下缺点:
1. 当有多个文件上传时,无法知道单个文件的上传进度,因为文件上传消息中根本就没有关于单个文件大小的信息

2. 浏览器必须将所有文件读取完毕才开始上传,并且是一次性提交所有的数据文件,在互联网环境下,会http连接超时,大文件无法上传成功。

所以基于这些原因,页面表单 + RFC1897规范 + http协议上传 + 后台apache common upload组件接收的这种解决方案,不适合解决WEB页面一次多文件上传,大文件上传情况,比较适合一次单个小文件附件的情况,如:博客附件,登记照片上传,预览等情况。

commom fileupload结构相关推荐

  1. commom fileupload简介

    一.概述 Commons FileUpload软件包可以轻松地为您的servlet和Web应用程序添加强大的高性能文件上传功能. FileUpload解析符合RFC 1867"HTML格式的 ...

  2. commons fileUpload 文件上传下载

    commons fileUpload 的使用: commons fileUpload 官网:http://commons.apache.org/fileupload/ 在上面可以下载:commons- ...

  3. Apache FileUpload介绍

    Apache FileUpload组件 在最初的 http 协议中,没有上传文件方面的功能.RFC1867("Form-based File Upload in HTML".)为 ...

  4. Java 文件上传组件 Apache Commons FileUpload 应用指南(二)——FileUpload如何工作?

    在最初的 http 协议中,没有上传文件方面的功能.RFC1867("Form-based File Upload in HTML".) 为 http 协议添加了这个功能.客户端的 ...

  5. Nginx 实现文件夹上传(保留目录结构)

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...

  6. 项目实战:ASP.NET:B/S结构 个人空间相册、照片上传下载系统

    项目实战:ASP.NET:B/S结构  个人空间相册.照片上传下载系 统 编辑环境:win10_x64 /VS2015/ SqlServer2012 项目:asp.net 项目简介:只是具有基本的登录 ...

  7. org.apache.commons.fileupload.DiskFileUpload使用上

    1.setSizeMax方法 setSizeMax方法用于设置请求消息实体内容的最大允许大小,以防止客户端故意通过上传特大的文件来塞满服务器端的存储空间,单位为字节. 2.setSizeThresho ...

  8. 使用Fileupload组件上传文本和文件

    使用fileupload组件上传文本和文件 绪论 使用fileupload组件可以很方便的向服务器上传数据,包括表单数据以及二进制文件,比如pdf.图片视频等等.下面演示如何上传form表单数据以及二 ...

  9. 【 js基础 Day2】js的流程控制:分支语句,循环.顺序结构

    复习 JavaScript简称为JS JavaScript是什么? 是一门脚本语言:不需要编译,直接运行 是一门解释性的语言:遇到一样代码就解释一行代码 C#语言是一门面向对象的语言,也是编译语言,是 ...

最新文章

  1. 谢文睿:西瓜书 + 南瓜书 吃瓜系列 8. 软间隔与支持向量回归
  2. max点缓存烘焙帧_深入理解浏览器的缓存机制
  3. 禁止北京地区IP访问站点
  4. 4、C语言面试笔试--内存操作-指针
  5. hdu 3401(单调队列优化dp)
  6. 公差基本偏差代号_螺纹基础知识学习,螺纹公差标准的结构,螺纹公差带与旋合长度...
  7. Jade —— 源于 Node.js 的 HTML 模板引擎
  8. jQuery操作DOM元素案例
  9. Pyinstaller打包Django项目
  10. Hbase Region in transition (RIT) 异常解决
  11. 菜鸟系列之C/C++经典试题(七)
  12. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_3_编程思想转换体验Lambda的更优写法...
  13. iPhone手机分辨率
  14. 此计算机未连接到网络.单击以连接,此计算机无法连接到家庭组win7
  15. 网易云音乐APP(基于APICloud平台)
  16. python可视化小程序-实际利率与黄金价格走势图
  17. Springboot 使用 sendgrid发送邮件
  18. 用html代码制作一个歌单,歌单.html · 李岢恩/MusicClub - Gitee.com
  19. qt在window实现调取本机摄像头或者外设摄像头二维码识别升级版
  20. CPU个数、内核数、线程数

热门文章

  1. 污水处理流程图怎么画
  2. 走进嵌入式Linux的世界
  3. 读了阮邵峰《外挂代练是什么罪?》《南京外挂代练案的二审判决》系列文章有感
  4. 三菱服务器显示代码d2,三菱QD64D2手册QD64D2用户手册 - 广州凌控
  5. Qt中对文件的拷贝删除重命名等操作
  6. 163基于springboot大学生兼职管理系统,鸟哥的linux私房菜视频教程
  7. ACM-动态规划21-三角形最长路径问题
  8. python聊天室源代码_Python实现文字聊天室
  9. 【板栗糖GIS】天正cad—天正选择中如何快速选择并删除图纸中多个相同对象
  10. 在使用计算机时遇到什么样的问题,2021年1-4月雅思口语题库part23:你在使用电脑时遇到的问题...