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
# ajax
# formdata
# 上传文件和数据
# Vue+axios使用FormData方式向后端发送数据
# 后端要求formdata传参前端该怎么处理详解
# 后端
# 上传文件
# 设置为
# 小编
# 键值
# 都是
# 字段名
# 第一个
# 可以用
# 其他的
# 我们可以
# 第二个
# 给大家
# 也不错
# 转化为
# 表单
# 想用
# 所述
# 需要注意
# 给我留言
相关文章:
c# 在ASP.NET Core中管理和取消后台任务
创业网站制作流程,创业网站可靠吗?
如何选择建站程序?包含哪些必备功能与类型?
制作网站公司那家好,网络公司是做什么的?
C#如何使用XPathNavigator高效查询XML
如何配置IIS站点权限与局域网访问?
h5网站制作工具有哪些,h5页面制作工具有哪些?
Android自定义listview布局实现上拉加载下拉刷新功能
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
宝塔面板创建网站无法访问?如何快速排查修复?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
建站之星代理如何优化在线客服效率?
海南网站制作公司有哪些,海口网是哪家的?
建站VPS选购需注意哪些关键参数?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
*服务器网站为何频现安全漏洞?
建站主机系统SEO优化与智能配置核心关键词操作指南
如何有效防御Web建站篡改攻击?
网站app免费制作软件,能免费看各大网站视频的手机app?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
音响网站制作视频教程,隆霸音响官方网站?
实例解析Array和String方法
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
高防服务器:AI智能防御DDoS攻击与数据安全保障
广州建站公司哪家好?十大优质服务商推荐
如何选择域名并搭建高效网站?
韩国服务器如何优化跨境访问实现高效连接?
香港服务器选型指南:免备案配置与高效建站方案解析
Python lxml的etree和ElementTree有什么区别
淘宝制作网站有哪些,淘宝网官网主页?
,石家庄四十八中学官网?
如何挑选高效建站主机与优质域名?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
b2c电商网站制作流程,b2c水平综合的电商平台?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
制作网站的公司有哪些,做一个公司网站要多少钱?
建站之星云端配置指南:模板选择与SEO优化一键生成
如何快速使用云服务器搭建个人网站?
如何在宝塔面板创建新站点?
开封网站制作公司,网络用语开封是什么意思?
制作公司内部网站有哪些,内网如何建网站?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
山东网站制作公司有哪些,山东大源集团官网?
SQL查询语句优化的实用方法总结
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
贸易公司网站制作流程,出口贸易网站设计怎么做?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
*请认真填写需求信息,我们会在24小时内与您取得联系。