一 文件上传
服务端:
一般服务端可以使用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
分享到:
相关推荐
这些是我工作中经常遇到的一些疑惑或搜集到的资料的一小部分,我会把自己经常遇到的问题总结一下,以后再传
这里需要说明的时,该文档是本人5年工作经验的积累,文档中大部分知识点来源于实际工作中的总结,(除了JAR等资源文件外)其代码都是可运行的,还有一部分知识来源于网络或者其他书籍,这里做一些收集,使该体系更加...
1. **文档管理**:用户可以上传、下载、编辑和删除文档,支持多种文件格式。 2. **智能分类与标签系统**:为文档添加标签,实现多维度分类,方便检索和管理。 3. **细粒度访问控制**:设置不同的访问权限,确保...
由于PDF共60M,所以分成4部分上传,这是第三部分,需要注意4部分凑齐后在part4会有一个合成工具最后合成pdf文件。 前言 提到Thinking这个词,读者大多会想到一本经典技术书籍《Thinking in Java》。之所以...
由于PDF共60M,所以分成4部分上传,这是第4部分,需要注意4部分凑齐后在part4会有一个合成工具最后合成pdf文件。 前言 提到Thinking这个词,读者大多会想到一本经典技术书籍《Thinking in Java》。之所以...
由于PDF共60M,所以分成4部分上传,这是第二部分,需要注意4部分凑齐后在part4会有一个合成工具最后合成pdf文件。 前言 提到Thinking这个词,读者大多会想到一本经典技术书籍《Thinking in Java》。之所以...
由于PDF共60M,所以分成4部分上传,这是第2部分,需要注意4部分凑齐后在part4会有一个合成工具最后合成pdf文件。 前言 提到Thinking这个词,读者大多会想到一本经典技术书籍《Thinking in Java》。之所以...
由于PDF共60M,所以分成4部分上传,这是第一部分,需要注意4部分凑齐后在part4会有一个合成工具最后合成pdf文件,最后一部分下载的时候需要5分,提前说明,免得浪费各位时间。 前言 提到Thinking这个词,读者大多...
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 ...
8.11 将手机文件上传至网站服务器 8.12 移动博客发布器 8.13 移动RSS阅读器 8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 ...
8.11 将手机文件上传至网站服务器 8.12 移动博客发布器 8.13 移动RSS阅读器 8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 ...
8.11 将手机文件上传至网站服务器 8.12 移动博客发布器 8.13 移动RSS阅读器 8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 ...
8.11 将手机文件上传至网站服务器 8.12 移动博客发布器 8.13 移动RSS阅读器 8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 ...