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解析获取JSON数据
Apr 08 jQuery
jQuery使用ajax_动力节点Java学院整理
Jul 05 jQuery
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
Jul 20 jQuery
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
Aug 01 jQuery
基于jquery实现多选下拉列表
Aug 02 jQuery
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
jQuery实现简单的计时器功能实例分析
Aug 29 jQuery
JS+jQuery实现注册信息的验证功能
Sep 26 jQuery
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
jQuery AJAX与jQuery事件的分析讲解
Feb 18 jQuery
jquery使用echarts实现有向图可视化功能示例
Nov 25 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中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
再谈javascript原型继承
2014/11/10 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
js仿拉勾网首页穿墙广告效果
2017/03/08 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
python selenium操作cookie的实现
2020/03/18 Python
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
eBay加拿大站:eBay.ca
2019/06/20 全球购物
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
大学生创业计划书的范文
2014/01/07 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
创先争优一句话承诺
2014/05/29 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
查摆问题自查报告范文
2014/10/13 职场文书