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 Validate表单验证插件实现代码
Jun 08 jQuery
jQuery 控制文本框自动缩小字体填充
Jun 16 jQuery
jQuery开源组件BootstrapValidator使用详解
Jun 29 jQuery
利用jquery如何从json中读取数据追加到html中
Dec 01 jQuery
jQuery实现鼠标响应式透明度渐变动画效果示例
Feb 13 jQuery
JQuery选中select组件被选中的值方法
Mar 08 jQuery
jQuery点击页面其他部分隐藏下拉菜单功能
Nov 27 jQuery
JavaScript实现的滚动公告特效【基于jQuery】
Jul 10 jQuery
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
Oct 26 jQuery
jQuery实现验证用户登录
Dec 10 jQuery
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
jquery实现淡入淡出轮播图效果
Dec 13 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 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
浅析javascript中函数声明和函数表达式的区别
2015/02/15 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
在Python中移动目录结构的方法
2016/01/31 Python
python中的lambda表达式用法详解
2016/06/22 Python
Python tkinter label 更新方法
2018/10/11 Python
对Django url的几种使用方式详解
2019/08/06 Python
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
String是最基本的数据类型吗?
2013/06/13 面试题
CNC数控操作工岗位职责
2013/11/19 职场文书
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
丑小鸭教学反思
2014/02/03 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
邀请函样本
2015/02/02 职场文书
美容院员工规章制度
2015/08/05 职场文书
小学体育组工作总结
2015/08/13 职场文书
教师节主题班会教案
2015/08/17 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
iPhone13再次曝光
2021/04/15 数码科技
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
SQL CASE 表达式的具体使用
2022/03/21 SQL Server