Html5实现文件异步上传功能


Posted in HTML / CSS onMay 19, 2017

1 简介

开发文件上传功能从来不是一件愉快的事,异步上传更是如此,使用过iframe和Flash的上传方案,也都感觉十分的别扭。本文简要简绍利用Html5的FormData实现文件的异步上传,还可以实现上传进度条和文件大小验证等。服务端使用springMVC的方案进行处理。

2 Html代码

<form id="myForm">
    <input type="file" id="u_photo" name="u_photo" />
    <input type="button" id="submit-btn" value="上传" />
</form>

3 JQuery上传

$("#submit-btn").on('click', function() {
    $.ajax({
        url:"/test/upload",
        type:"post",
        data:new FormData($("#myForm").get(0)),
        //十分重要,不能省略
        cache: false,
        processData: false,
        contentType: false,
        success: function () {
            alert("上传成功!");
        }
    });
});

4 JQuery文件大小验证

文件大小的及相应行为的控制,需根据需要自行处理,本方法只是示例方法。

$('#u_photo').on('change', function() {
    var file = this.files[0];
    if (file.size > 1024*1000) {
        alert('文件最大1M!')
    }
});

5 JQuery进度条

在ajax方法中加入xhr即可控制上传进度,进度条可以使用html5的progress也可使用其它的进度条。显示及隐藏进度条需要自行处理,本方法只是简单介绍了进度条的基本控制。

xhr: function() {
    var myXhr = $.ajaxSettings.xhr();
    if (myXhr.upload) {
        myXhr.upload.addEventListener('progress', function(e) {
            if (e.lengthComputable) {
                $('progress').attr({
                    value: e.loaded,
                    max: e.total,
                });
            }
        } , false);
    }
    return myXhr;
}

6 springMVC服务端

6.1 maven依赖

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.2</version>
</dependency>

6.2 servlet-context.xml

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />

6.3 Controller

示例程序,并未给出文件验证,存储及处理的相应代码。

@RequestMapping(value="/test/upload",method = RequestMethod.POST)
@ResponseBody
public String upload(@RequestParam("u_photo") MultipartFile u_photo) {
    System.out.println("u_photo="+u_photo.getSize());
    return "ok";
}

7 兼容性

IE 10+, Firefox 4.0+, Chrome 7+, Safari 5+, Opera 12+

8 推荐阅读

如果对上述方案不满意,推荐使用如下的解决方案:

JQuery File Uploader

以上所述是小编给大家介绍的Html5实现文件异步上传功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

HTML / CSS 相关文章推荐
详解Css3新特性应用之过渡与动画
Jan 10 HTML / CSS
css3 给背景设置渐变色的方法
Sep 12 HTML / CSS
基于html和CSS3制作酷炫的导航栏
Sep 23 HTML / CSS
CSS3 animation ? steps 函数详解
Aug 30 HTML / CSS
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
Jan 27 HTML / CSS
HTML5的video标签的浏览器兼容性增强方案分享
May 19 HTML / CSS
html5+CSS3+JS实现七夕言情功能代码
Aug 28 HTML / CSS
让IE9以下版本的浏览器兼容HTML5的方法
Mar 12 HTML / CSS
html5适合移动应用开发的12大特性
Mar 19 HTML / CSS
详解HTML5中div和section以及article的区别
Jul 14 HTML / CSS
H5调用相机拍照并压缩图片的实例代码
Jul 20 HTML / CSS
HTML5新特性之type=file文件上传功能
Feb 02 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
May 18 #HTML / CSS
HTML5中indexedDB 数据库的使用实例
May 11 #HTML / CSS
详解HTML5 window.postMessage与跨域
May 11 #HTML / CSS
HTML5拖放API实现拖放排序的实例代码
May 11 #HTML / CSS
解决html5中video标签无法播放mp4问题的办法
May 07 #HTML / CSS
Web前端页面跳转并取到值
Apr 24 #HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
Apr 24 #HTML / CSS
You might like
PHP 图像尺寸调整代码
2010/05/26 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
js实现烟花特效
2020/03/02 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
python概率计算器实例分析
2015/03/25 Python
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
python脚本后台执行方式
2019/12/21 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
护士个人简历自荐信
2013/10/18 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
客服专员岗位职责
2015/02/10 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
vue 给数组添加新对象并赋值
2022/04/20 Vue.js
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS