`
atell
  • 浏览: 158676 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Java文件上传的一些知识积累

阅读更多

一 文件上传

服务端: 一般服务端可以使用struts,SpringMVC(web框架都有这样的支持),struts是基于common-fileupload的,SpringMVC则基于Commons FileUpload和COS FileUpload ,它们一般都可以设置服务端使用的磁盘tmp文件或内存的大小,单个文件大小和类型的限制等。

     本质上,它们都是在Servlet之上对request.getInputSteam()的内容做解析,服务器解析http post数据,仅仅是对http协议的实现,原理简单。(参考最后部分文件上传的http协议:http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2 )

客户端: 可以使用swf或者js,swf有SWFUpload插件,js有Jquery很多插件,最终都是通过http post方式提交文件。单从文件上传的功能看,服务端不关心客户端使用的是swf还是js,因为最终都是http post方式(如果要实现进度条,服务端就需要关心是否要作配合了)。

 


二 进度条
js实现进度条原理: 因为js无法通过浏览器获取文件传输的进度,所以需要服务端配合,服务端将进度(当前长度,总长度)存到session中,提供新接口返回此2个值;而客户端:使用Jquery的ajax轮询(comet方式:请求-Blocked(30s内),响应-请求-Blocked(30s内),响应...)进度,并显示。


swf实现进度条的原理: flash是本地的插件,上传文件时是flash把流交给浏览器,因此它知道文件的进度,它可以在发送过程中将发送的相关状态数据回传到js的函数中处理,不需要服务端做特别的配合。

 

 

另外:qq邮箱的附件上传,默认情况下就是使用swf的方式,可以看到页面有引进upload.swf文件。qq邮件发送的进度条估计也是使用swf。因为js实现进度条的方式太耗服务器资源了,一般不这么做。

 

参考:

http://jakarta.apache.org/commons/fileupload

http://www.servlets.ocm/cos

分享到:
评论

相关推荐

    工作后JAVA的知识积累和部分JAVA资料(由于大小限制以后再上传更多)

    这些是我工作中经常遇到的一些疑惑或搜集到的资料的一小部分,我会把自己经常遇到的问题总结一下,以后再传

    JAVA 五年的工作经验和学习笔记

    这里需要说明的时,该文档是本人5年工作经验的积累,文档中大部分知识点来源于实际工作中的总结,(除了JAR等资源文件外)其代码都是可运行的,还有一部分知识来源于网络或者其他书籍,这里做一些收集,使该体系更加...

    SpringBoot项目知识管理系统.zip

    1. **文档管理**:用户可以上传、下载、编辑和删除文档,支持多种文件格式。 2. **智能分类与标签系统**:为文档添加标签,实现多维度分类,方便检索和管理。 3. **细粒度访问控制**:设置不同的访问权限,确保...

    大象Thinking In UML.pdf (Part2)

    由于PDF共60M,所以分成4部分上传,这是第三部分,需要注意4部分凑齐后在part4会有一个合成工具最后合成pdf文件。 前言 提到Thinking这个词,读者大多会想到一本经典技术书籍《Thinking in Java》。之所以...

    大象Thinking In UML.pdf (Part3)

    由于PDF共60M,所以分成4部分上传,这是第4部分,需要注意4部分凑齐后在part4会有一个合成工具最后合成pdf文件。 前言 提到Thinking这个词,读者大多会想到一本经典技术书籍《Thinking in Java》。之所以...

    大象Thinking In UML.pdf(Part1)

    由于PDF共60M,所以分成4部分上传,这是第二部分,需要注意4部分凑齐后在part4会有一个合成工具最后合成pdf文件。 前言 提到Thinking这个词,读者大多会想到一本经典技术书籍《Thinking in Java》。之所以...

    大象Thinking In UML.pdf (Part1)

    由于PDF共60M,所以分成4部分上传,这是第2部分,需要注意4部分凑齐后在part4会有一个合成工具最后合成pdf文件。 前言 提到Thinking这个词,读者大多会想到一本经典技术书籍《Thinking in Java》。之所以...

    大象Thinking In UML.pdf (Part0)

    由于PDF共60M,所以分成4部分上传,这是第一部分,需要注意4部分凑齐后在part4会有一个合成工具最后合成pdf文件,最后一部分下载的时候需要5分,提前说明,免得浪费各位时间。 前言 提到Thinking这个词,读者大多...

    notes:Android开发小技巧(自己学习的草稿)

    Android 开发中的小知识积累。个人积累,不惜勿喷。 git提交命令 git add 文件\文件夹 git commit -m "提交信息" git push 小技巧 时间轨迹 laizi 柴泽建_Jack 2016/7/28 2016/4/11 2016/4/13 2016/4/17 fork from ...

    Google Android SDK开发范例大全(第3版) 1/5

    8.11 将手机文件上传至网站服务器 8.12 移动博客发布器 8.13 移动RSS阅读器 8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 ...

    Google Android SDK开发范例大全(第3版) 4/5

    8.11 将手机文件上传至网站服务器 8.12 移动博客发布器 8.13 移动RSS阅读器 8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 ...

    Google Android SDK开发范例大全(第3版) 3/5

    8.11 将手机文件上传至网站服务器 8.12 移动博客发布器 8.13 移动RSS阅读器 8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 ...

    Google Android SDK开发范例大全(第3版) 5/5

    8.11 将手机文件上传至网站服务器 8.12 移动博客发布器 8.13 移动RSS阅读器 8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 ...

Global site tag (gtag.js) - Google Analytics