jquery使用FormData实现异步上传文件


Posted in jQuery onOctober 25, 2018

考虑一个常见的用户上传头像的场景:

  • 点击按钮,弹出文件选择框
  • 选中图片并确认后直接上传图片

实现这个功能,需要使用<input>来添加文件,并实现上传功能。传统的上传文件是将<input>放到<form>中提交,但在这个场景中并不存在form表单,只有一个input而已。那么应该如何处理呢?

答案是可以使用FormData来实现文件的提交。

先看一下MDN对FormData的介绍:

XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的send()方法来异步的提交这个”表单”.比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件.

这样一来,解决问题的思路就出来了:

  • 每次选中文件并确认后,<input>会触发change事件,在onchange事件处理函数中处理即可。
  • 创建一个FormData对象,并将选中的文件追加进去。
  • 使用Ajax发送这个FormData对象。

下面用一个Demo展示具体的代码实现用FormData将文件发送到一个php:

<html>
<head>
  <title>Upload</title>
  <meta charset="utf-8">
</head>
<body>
  <input id="file-input" type="file">

  <script>
    var input = document.getElementById('file-input');
    input.onchange = function () {
      var data = new FormData();
      data.append('file', input.files[0]);

      var request = new XMLHttpRequest();
      request.open('POST', './upload.php');
      request.send(data);
    };
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
Mar 24 jQuery
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
js案例之鼠标跟随jquery版(实例讲解)
Jul 21 jQuery
基于jquery实现多选下拉列表
Aug 02 jQuery
JQuery判断正整数整理小结
Aug 21 jQuery
jQuery实现IE输入框完成placeholder标签功能的方法
Sep 20 jQuery
jQuery实现checkbox即点即改批量删除及中间遇到的坑
Nov 11 jQuery
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 jQuery
Jquery让form表单异步提交代码实现
Nov 14 jQuery
jQuery Raty星级评分插件使用方法实例分析
Nov 25 jQuery
jQuery轮播图功能制作方法详解
Dec 03 jQuery
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 #jQuery
jQuery pagination分页示例详解
Oct 23 #jQuery
jquery.pagination.js分页使用教程
Oct 23 #jQuery
jquery分页插件pagination使用教程
Oct 23 #jQuery
使用jquery Ajax实现上传附件功能
Oct 23 #jQuery
jquery实现动态添加附件功能
Oct 23 #jQuery
jQuery.validate.js表单验证插件的使用代码详解
Oct 22 #jQuery
You might like
php注入实例
2006/10/09 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
python列表去重的二种方法
2014/02/14 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
Python for循环中的陷阱详解
2018/07/13 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
铁路工务反思材料
2014/02/07 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
春节超市活动方案
2014/08/14 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
MySQL创建定时任务
2022/01/22 MySQL
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏