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 Flexbox中flex-shrink属性的用法示例介绍
Dec 30 HTML / CSS
CSS3制作气泡对话框的实例教程
May 10 HTML / CSS
解决margin 外边距合并问题
Jul 03 HTML / CSS
HTML5移动开发图片压缩上传功能
Nov 09 HTML / CSS
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
Jan 31 HTML / CSS
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
Jan 11 HTML / CSS
HTML5移动端手机网站开发流程
Apr 25 HTML / CSS
HTML5本地存储之Web Storage详解
Jul 04 HTML / CSS
html5的input的required使用中遇到的问题及解决方法
Apr 24 HTML / CSS
Html5页面二次分享的实现
Jul 30 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
Sep 27 HTML / CSS
HTML5 weui使用笔记
Nov 21 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
2019/04/02 Javascript
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
python爬虫使用cookie登录详解
2017/12/27 Python
python简单操作excle的方法
2018/09/12 Python
Django model反向关联名称的方法
2018/12/15 Python
python浪漫表白源码
2019/04/05 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
python操作gitlab API过程解析
2019/12/27 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
介绍下WebSphere的安全性
2013/01/31 面试题
社区工作者先进事迹
2014/01/18 职场文书
学校万圣节活动方案
2014/02/13 职场文书
检讨书范文500字
2015/01/28 职场文书
武夷山导游词
2015/02/03 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
法院答辩状格式
2015/05/22 职场文书
军事博物馆观后感
2015/06/05 职场文书
学校就业保障协议书
2019/06/24 职场文书
详解Python描述符的工作原理
2021/06/11 Python
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang