HTML5+Springmvc实现拖拽文件上传
2015-09-17 23:55
441 查看
转自 http://www.656463.com/article/jU7zqi.htm
关于这个拖拽上传,其实国外有很多网站已经有这样的应用,最早推出拖拽上传应用的是 Gmail,它支持标准浏览器下拖拽本地文件到浏览器中作为邮件的附件发送,但其实现在利用HTML5的功能实现,主要借助于新版支持的浏览器来实现,IE还是弱很多
看到一段话是这样说的:你敢"脱",我就敢传。
拖拽上传应用主要使用了以下
HTML5技术:
Drag&Drop:
HTML5基于拖拽的事件机制.
File API:
可以很方便的让 Web 应用访问文件对象,File API包括FileList、Blob、File、FileReader、URI scheme,本文主要讲解拖拽上传中用到的 FileList 和 FileReader 接口。
FormData:
FormData 是基于XMLHttpRequest Level 2的新接口,可以方便 web 应用模拟 Form 表单数据,最重要的是它支持文件的二进制流数据,这样我们就能够通过它来实现 AJAX 向后端发送文件数据了。
HTML5Drag & Drop
事件
过去我们想实现网页中的拖拽效果,基本上都是使用DOM事件模型中的mousedown、mousemove、mouseup的事件监听来模拟拖拽效果,为了实现实时的拖拽移动效果,还要不停地获取鼠标的坐标,还要不停的修改元素的位置,代码要堆很多,而且性能上也很不好(不停地修改元素位置会导致页面reflow,除非绝对定位),现在有了html5原生的Drag & Drop 拖拽事件,真的是方便了许多,用”事半功倍”来形容绝不为过。
Drag & Drop 包括以下事件:
dragstart:要被拖拽的元素开始拖拽时触发,这个事件对象是被拖拽元素
dragenter:拖拽元素进入目标元素时触发,这个事件对象是目标元素
dragover:拖拽某元素在目标元素上移动时触发,这个事件对象是目标元素
dragleave:拖拽某元素离开目标元素时触发,这个事件对象是目标元素
dragend:在drop之后触发,就是拖拽完毕时触发,这个事件对象是被拖拽元素
drop:将被拖拽元素放在目标元素内时触发,这个事件对象是目标元素 完成一次成功页面元素拖拽的行为事件过程: dragstart –> dragenter –> dragover –> drop –> dragend
获取文件数据HTML5File API
File API 中的 FileList 接口,它主要通过两个途径获取本地文件列表:
一种是 <input type="file">的表单形式,
一种是 e.dataTransfer.files拖拽事件传递的文件信息
使用files 方法将会获取到拖拽文件的数组形势的数据,每个文件占用一个数组的索引,如果该索引不存在文件数据,将返回 null 值。可以通过length属性获取文件数量.
文件类型
AJAX 上传图片(file.getAsBinary&
FormData)
file.getAsBinary获取文件流很简单,但是要想上传数据,就要模拟一下表单的数据格式了,首先看看模拟表单的 js 代码, FormData模拟表单数据时更是简洁,不用麻烦的去拼字符串,而是直接将数据 append 到 formdata 对象中即可
HTML5+Springmvc实现拖拽文件上传实例
完整源代码
springmvc上传的配置
控制类
效果图:
后台输出:image/jpeg,files,DSC03856.JPG
关于这个拖拽上传,其实国外有很多网站已经有这样的应用,最早推出拖拽上传应用的是 Gmail,它支持标准浏览器下拖拽本地文件到浏览器中作为邮件的附件发送,但其实现在利用HTML5的功能实现,主要借助于新版支持的浏览器来实现,IE还是弱很多
看到一段话是这样说的:你敢"脱",我就敢传。
拖拽上传应用主要使用了以下
HTML5技术:
Drag&Drop:
HTML5基于拖拽的事件机制.
File API:
可以很方便的让 Web 应用访问文件对象,File API包括FileList、Blob、File、FileReader、URI scheme,本文主要讲解拖拽上传中用到的 FileList 和 FileReader 接口。
FormData:
FormData 是基于XMLHttpRequest Level 2的新接口,可以方便 web 应用模拟 Form 表单数据,最重要的是它支持文件的二进制流数据,这样我们就能够通过它来实现 AJAX 向后端发送文件数据了。
HTML5Drag & Drop
事件
过去我们想实现网页中的拖拽效果,基本上都是使用DOM事件模型中的mousedown、mousemove、mouseup的事件监听来模拟拖拽效果,为了实现实时的拖拽移动效果,还要不停地获取鼠标的坐标,还要不停的修改元素的位置,代码要堆很多,而且性能上也很不好(不停地修改元素位置会导致页面reflow,除非绝对定位),现在有了html5原生的Drag & Drop 拖拽事件,真的是方便了许多,用”事半功倍”来形容绝不为过。
Drag & Drop 包括以下事件:
dragstart:要被拖拽的元素开始拖拽时触发,这个事件对象是被拖拽元素
dragenter:拖拽元素进入目标元素时触发,这个事件对象是目标元素
dragover:拖拽某元素在目标元素上移动时触发,这个事件对象是目标元素
dragleave:拖拽某元素离开目标元素时触发,这个事件对象是目标元素
dragend:在drop之后触发,就是拖拽完毕时触发,这个事件对象是被拖拽元素
drop:将被拖拽元素放在目标元素内时触发,这个事件对象是目标元素 完成一次成功页面元素拖拽的行为事件过程: dragstart –> dragenter –> dragover –> drop –> dragend
File API 中的 FileList 接口,它主要通过两个途径获取本地文件列表:
一种是 <input type="file">的表单形式,
一种是 e.dataTransfer.files拖拽事件传递的文件信息
FormData)
file.getAsBinary获取文件流很简单,但是要想上传数据,就要模拟一下表单的数据格式了,首先看看模拟表单的 js 代码, FormData模拟表单数据时更是简洁,不用麻烦的去拼字符串,而是直接将数据 append 到 formdata 对象中即可
完整源代码
后台输出:image/jpeg,files,DSC03856.JPG
相关文章推荐
- html5应用缓存
- html5常见的表单元素
- MyEclipse 2015 上配置CSS3.0和HTML5的标签自动提示
- 利用HTML5,前端js实现图片压缩
- H5学习之旅-H5列表(8)
- H5学习之旅-H5列表(8)
- H5学习之旅-H5列表(8)
- H5学习之旅-H5列表(8)
- HTML5中canvas的save和restore方法
- H5 学习之旅-H5表格(7)
- H5 学习之旅-H5表格(7)
- H5 学习之旅-H5表格(7)
- H5 学习之旅-H5表格(7)
- HTML5 重力感应 事件讲解
- HTML5 重力感应试玩
- html5屏幕旋转事件 onorientationchange
- 20150913HTML5心得
- H5学习之旅-H5的超链接以及图片链接(6)
- H5学习之旅-H5的超链接以及图片链接(6)
- H5学习之旅-H5的超链接以及图片链接(6)