jQuery Ajax使用FormData上传文件和其他数据后端web.py获取


Posted in jQuery onJune 11, 2017

XMLHttpRequest Level 2 添加了一个新的接口——FormData。与普通的 Ajax 相比,使用 FormData 的最大优点就是我们可以异步上传二进制文件。

jQuery 2.0+的版本支持FormData

方法一:使用<form>表单初始化FormData对象方式上传文件

•前端(JQuery):

<form enctype="multipart/form-data">
  <input type="file" name="myfile" onchange="loadFile(this.files[0])">
</form>
<script>
  function loadFile(file){
    var formdata = new FormData($$('form')[0]);
    $.ajax({
      url: 'jobs/add',
      type: 'POST',
      datatype: 'json',
      data: formdata,
      cache:false,
      traditional: true,
      contentType: false,
      processData: false,
      success: function (data) {},
      error: function () {}
    });
  }
</script>

•后台(web.py):

class Add:
  def POST(self):
    i = web.input(myfile={})
    print(i['myfile'].filename) #文件名
    print(i['myfile'].value) #文件内容
    print(i['myfile'].file.read()) #文件内容

 注意:

1.<form>的enctype属性需要设置为“multipart/form-data”

2.$.ajax中processData、contentType和cache需要设置为false

3.后端通过web.input获取文件的字段名,同前端指定的input标签的name属性

方法二√:不用<form>,使用FormData对象添加字段方式上传文件

有时,我们并不想用

标签,而且通过ajax传给后端的并不只有文件,可能还有其他的键值对,这时就可以用这个方法

•前端(JQuery):

<input type="file" onchange="loadFile(this.files[0])" />
function loadFile(file){
  container.fd = new FormData();
  container.fd.append('myfile',file);
  container.fd.append('otherkey',othervalue);
  $.ajax({
    url: 'jobs/add',
    type: 'POST',
    datatype: 'json',
    data: fd,
    cache:false,
    traditional: true,
    contentType: false,
    processData: false,
    success: function (data) {},
    error: function () {}
  });
}

•后台(web.py):

class Add:
  def POST(self):
    i = web.input(myfile={}, otherkey='')
    print(i['myfile'].filename) #文件名
    print(i['myfile'].value) #文件内容
    print(i['myfile'].file.read()) #文件内容

 注意:

1.没有<form>标签(有了也不错)

2.append()方法的第二个参数是文件对象,在html中已经通过loadFile方法的参数传过来

3.后端通过web.input获取文件的字段名,同前端append()方法的第一个参数

4.因为通过web.input获取的值都是字符串,如果除文件以外的键值对传过来是null,会自动转化为字符串'null'。这点处理的时候需要注意

以上所述是小编给大家介绍的jQuery Ajax使用FormData上传文件和其他数据后端web.py获取,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

jQuery 相关文章推荐
HTML5+jQuery实现搜索智能匹配功能
Mar 24 jQuery
jQuery表单验证之密码确认
May 22 jQuery
浅谈struts1 &amp; jquery form 文件异步上传
May 25 jQuery
jQuery基于cookie实现换肤功能实例
Oct 14 jQuery
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
Nov 14 jQuery
利用jquery如何从json中读取数据追加到html中
Dec 01 jQuery
jQuery动态添加元素无法触发绑定事件的解决方法分析
Jan 02 jQuery
使用jquery DataTable和ajax向页面显示数据列表的方法
Aug 09 jQuery
JQuery样式操作、click事件以及索引值-选项卡应用示例
May 14 jQuery
JS拖动选择table里的单元格完整实例【基于jQuery】
May 28 jQuery
jquery检测上传文件大小示例
Apr 26 jQuery
JQuery实现折叠式菜单的详细代码
Jun 03 jQuery
jQuery复合事件结合toggle()方法的用法示例
Jun 10 #jQuery
jQuery复合事件用法示例
Jun 10 #jQuery
jQuery简单绑定单个事件的方法示例
Jun 10 #jQuery
jQuery正则验证注册页面经典实例
Jun 10 #jQuery
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
Jun 09 #jQuery
JQuery.dataTables表格插件添加跳转到指定页
Jun 09 #jQuery
jQuery为某个div加入行样式
Jun 09 #jQuery
You might like
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
浅谈php提交form表单
2015/07/01 PHP
8个必备的PHP功能开发
2015/10/02 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
php中的依赖注入实例详解
2019/08/14 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
Javascript的闭包
2009/12/31 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
2016/05/10 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
Python 获得13位unix时间戳的方法
2017/10/20 Python
3分钟学会一个Python小技巧
2018/11/23 Python
pyqt5实现登录界面的模板
2020/05/30 Python
小结Python的反射机制
2020/09/28 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
家长给孩子的表扬信
2014/01/17 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
MySQL通过binlog恢复数据
2021/05/27 MySQL
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫