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实现字体颜色渐变效果的方法
Mar 29 jQuery
jQuery实现动态添加、删除按钮及input输入框的方法
Apr 27 jQuery
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
Apr 28 jQuery
jQuery返回定位插件详解
May 15 jQuery
jQuery Validate 校验多个相同name的方法
May 18 jQuery
jQuery表单设置值的方法
Jun 30 jQuery
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 jQuery
jQuery实现简单日期格式化功能示例
Sep 19 jQuery
JQuery 选择器、DOM节点操作练习实例
Sep 28 jQuery
jQuery实现的事件绑定功能基本示例
Oct 11 jQuery
jquery 输入框查找关键字并提亮颜色的实例代码
Jan 23 jQuery
jQuery实现合并表格单元格中相同行操作示例
Jan 28 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/05/24 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
php引用和拷贝的区别知识点总结
2019/09/23 PHP
15 个 JavaScript Web UI 库
2010/05/19 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
jQuery操作checkbox选择(list/table)
2013/04/07 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
Vue路由的模块自动化与统一加载实现
2020/06/05 Javascript
Python实现两款计算器功能示例
2017/12/19 Python
python模块之paramiko实例代码
2018/01/31 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
python如何将多个PDF进行合并
2019/08/13 Python
Python更新所有已安装包的操作
2020/02/13 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
护士求职推荐信范文
2013/11/23 职场文书
函授本科自我鉴定
2014/02/04 职场文书
高中军训感言500字
2014/02/24 职场文书
单位委托函范文
2015/01/29 职场文书
旅游项目合作意向书
2015/05/08 职场文书
高一数学教学反思
2016/02/18 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
python中pycryto实现数据加密
2022/04/29 Python