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 相关文章推荐
jQuery源码解读之extend()与工具方法、实例方法详解
Mar 30 jQuery
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 jQuery
jQuery实现frame之间互通的方法
Jun 26 jQuery
JQuery EasyUI的一些常用组件
Jul 12 jQuery
jQuery实现广告条滚动效果
Aug 22 jQuery
jquery如何实现点击空白处隐藏元素
Dec 05 jQuery
jQuery+ajax读取json数据并按照价格排序示例
Mar 28 jQuery
jQuery实现的简单获取索引功能示例
Jun 04 jQuery
jQuery实现仿京东防抖动菜单效果示例
Jul 06 jQuery
jQuery实现鼠标移入移出事件切换功能示例
Sep 06 jQuery
jquery实现拖拽添加元素功能
Dec 01 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 google或baidu分页代码
2009/11/26 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
PHP7 list() 函数修改
2021/03/09 PHP
用js生产批量批处理执行命令
2008/07/28 Javascript
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
vue better scroll 无法滚动的解决方法
2018/06/07 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
Python进行数据科学工作的简单入门教程
2015/04/01 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
Python中static相关知识小结
2018/01/02 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
python实现远程控制电脑
2019/05/23 Python
python远程邮件控制电脑升级版
2019/05/23 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
wxPython色环电阻计算器
2019/11/18 Python
解决Python中回文数和质数的问题
2019/11/24 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
工程地质勘察专业大学生求职信
2013/10/13 职场文书
单位工资证明范本
2015/06/12 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL