HTML5-WebSocket实现多文件同时上传
2013-08-28 16:02
155 查看
在传统的HTTP应用上传文件想要同时上传多个文件并查看上传进度是一件很麻烦的事情,当然现在也有一些基于SWF的文件上传组件提供这种的便利性.到了HTML5下对文件的读取和上传的控制方面就非常灵活,HTML5提供一系列的AIP进行文件读取,包括计取文件某一块的内容也非常方便,结合Websocket进行文件的传输就变得更加方便和灵活.下面通过使用HTML5结合websocet简单地实现多文件同时上传应用。
大概预览一下需要做的功能:
主要功能是用户可以直接把文件夹的文件直接拖放到网页中,并进行上传,在上传的过程中显示上传进度信息.
为了方便读取文件信息,在原有File的基础封装了一个简单文件信息读取的对象类.
类的处理很简单,通过file初始化并指定分块大小来实始化一些文件信息,如页数量页大小等.当然最重要还封装文件对应的Upload方法,用于把文件块信息打包成base64信息通过Websocket的方式发送到服务器。
在HTML5中接受系统文件拖放进来并不需要做复杂的事情,只需要针对容器元素绑定相关事件即可.
只需要在onDrop过程中获取相关拖放文件即可,这些可能通过一些HTML5的教程可以得到帮助,详细看http://www.html5rocks.com/zh/tutorials/file/dndfiles/
这时候只需要针对选择的文件构建相关FileInfo对象,并调用上传方法即可.
通过UploadProcess事件对上传文件进度信息进行一个设置更新
借助于Beetle对websocket的支持对应服务端的实现就非常简单了
服务端方法有两个一个是上传文件请求,和一个上传文件块接收方法。
只需要以上简单的代码就能实现多文件同时上传功能,在这采用json来处理上传的信息,所以文件流要进行一个base64的编码处理,由于websocket浏览提交的数据一般都有MASK处理再加上base64那损耗相对来说比较重,实际上websocket有提供流的数据包格式(arraybuffer);当然这种处理在操作上就没有json来得方便简单。
演示地址:http://html5.ikende.com/upload.htm 使用chrome或IE10浏览器
实现功能
大概预览一下需要做的功能:主要功能是用户可以直接把文件夹的文件直接拖放到网页中,并进行上传,在上传的过程中显示上传进度信息.
FileInfo类封装
为了方便读取文件信息,在原有File的基础封装了一个简单文件信息读取的对象类.
文件拖放
在HTML5中接受系统文件拖放进来并不需要做复杂的事情,只需要针对容器元素绑定相关事件即可.这时候只需要针对选择的文件构建相关FileInfo对象,并调用上传方法即可.
C#服务端
借助于Beetle对websocket的支持对应服务端的实现就非常简单了
总结
只需要以上简单的代码就能实现多文件同时上传功能,在这采用json来处理上传的信息,所以文件流要进行一个base64的编码处理,由于websocket浏览提交的数据一般都有MASK处理再加上base64那损耗相对来说比较重,实际上websocket有提供流的数据包格式(arraybuffer);当然这种处理在操作上就没有json来得方便简单。演示地址:http://html5.ikende.com/upload.htm 使用chrome或IE10浏览器
相关文章推荐
- HTML5-WebSocket实现多文件同时上传
- HTML5-WebSocket实现多文件同时上传
- 基于html5 websocket API简单实现断点上传文件
- 用html5的websocket实现的文件上传,支持断点续传,妙传。
- 基于html5 websocket API简单实现断点上传文件
- html5 file slice()对文件进行分块,实现断点上传
- HTML5拖拽文件到浏览器并实现文件上传下载功能代码
- flash + html5 实现浏览器兼容的文件上传方案
- 文件上传(jspsmart实现)file和text表单同时提交的问题
- html5中的input(type="file")的multiple属性,实现多文件上传,并用js控制文件大小,数量
- HTML5文件实现拖拽上传
- html5用ajax方式实现文件上传并显示进度
- SSRS 实现多个文件同时上传和下载到ReportManager的功能
- 使用HTML5实现多文件上传
- jQuery.Form实现Ajax上传文件同时设置headers的方法
- 用Html5与Asp.net MVC上传多个文件的实现代码
- php 使用html5实现多文件上传实例
- 使用html5技术实现文件的上传
- 使用Html5的WebSocket在浏览器上传文件, 支持多文件和大文件.
- 基于HT for Web矢量实现HTML5文件上传进度条