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 相关文章推荐
vue中如何引入jQuery和Bootstrap
Apr 10 jQuery
解决jQuery ajax动态新增节点无法触发点击事件的问题
May 24 jQuery
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
Jun 13 jQuery
React中jquery引用的实现方法
Sep 12 jQuery
jQuery EasyUI开发技巧总结
Sep 26 jQuery
jQuery实现切换隐藏与显示同时切换图标功能
Oct 29 jQuery
基于jQuery实现定位导航位置效果
Nov 15 jQuery
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
jQuery实现动态添加和删除input框实例代码
Mar 26 jQuery
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 jQuery
jQuery实现的移动端图片缩放功能组件示例
May 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函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
php中strtotime函数用法详解
2014/11/15 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
9个比较实用的php代码片段
2016/03/15 PHP
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
js类型检查实现代码
2010/10/29 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
python脚本实现查找webshell的方法
2014/07/31 Python
Python抓取京东图书评论数据
2014/08/31 Python
python中map、any、all函数用法分析
2015/04/21 Python
Python中常见的数据类型小结
2015/08/29 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
Python序列循环移位的3种方法推荐
2018/04/09 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
python搜索算法原理及实例讲解
2020/11/18 Python
什么是Web Service?
2012/07/25 面试题
团员的自我评价
2013/12/01 职场文书
男性健康日的活动方案
2014/08/18 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书