1直接form提交给后台处理

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>form-upload</title>
</head>
<body>
  注意form的enctype类型"multipart/form-data"
 <form action="/form_upload" method="post" enctype="multipart/form-data">  <input type="file" name="file"/>  <input type="submit", value="上传"/>  </form>  </body>  </html>

后台post方法统一处理代码如下:
class FormRequest_handle(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
self.render('iframe_upload.html', status='') def post(self, *args, **kwargs):
print('post')
file_data = self.request.files['file']#读出了的文件是数组里面的是字典形式[{'filename':'xxx','body':'xxxxxxxxxxxxx'}]
for meta in file_data:
filename = meta['filename']
print(filename, file_data)
with open(os.path.join('static', filename), 'wb') as up:
up.write(meta['body'])
self.write('upload success') settings = {
'template_path':'views',
'static_path':'static',
# 'xsrf_cookies':True,此处测试csrf跨站伪造请求攻击请忽略
}
if __name__ == '__main__':
application = tornado.web.Application([
# (r'/index', Indexhandle),
# (r'/manager', Managerdhandle),
# (r'/csrf', Csrf_handle),
# (r'/xml', XmlHttpRequest_handle),
(r'/iframe',FormRequest_handle), ], **settings) application.listen(8089)
tornado.ioloop.IOLoop.instance().start()

  2.伪ajax(iframe) 此方法发送请求不刷新页面,利用iframe 的局部刷新特性,对浏览器兼容性更好

 <body>
<form id="myform" action="/iframe" method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="button" value="上传" onclick="redirect()"/>
<iframe id="myiframe" name="my_iframe"></iframe>
</form>
<script src="{{static_url('jquery-3.2.1.js')}}"></script>
<script>
function redirect() {
// document.getElementById('myiframe').onload = test;#执行完iframe立即执行test函数
$('#myiframe').onload = test;
document.getElementById('myform').target = 'my_iframe';//此处等于IDmyframe会有不同
document.getElementById('myform').submit();
// $('#myform').submit();
}
function test() {
var t = $('#myiframe').contents().find('body').text();
console.log(t)
}
</script>
</body>

tornado之文件上传的几种形式form,伪ajax(iframe)的更多相关文章

  1. curl文件上传有两种方式,一种是post_fileds,一种是infile

    curl文件上传有两种方式,一种是POSTFIELDS,一种是INFILE,POSTFIELDS传递@实际地址,INFILE传递文件流句柄! );curl_setopt($ch, CURLOPT_PO ...

  2. 让nginx支持文件上传的几种模式

    文件上传的几种不同语言和不同方法的总结. 第一种模式 : PHP 语言来处理 这个模式比较简单, 用的人也是最多的, 类似的还有用 .net 来实现, jsp来实现, 都是处理表单.只有语言的差别, ...

  3. 文件上传的三种模式-Java

    文件上传的三种方式-Java 前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方 ...

  4. 第二百七十三节,Tornado框架-文件上传

    Tornado框架-文件上传 第一.普通表单上传文件 self.request.files["fafafa"] 获取上传文件信息,参数["上传文件框的name名称&quo ...

  5. 基于tornado的文件上传demo

    这里,web框架是tornado的4.0版本,文件上传组件,是用的bootstrap-fileinput. 这个小demo,是给合作伙伴提供的,模拟APP上摄像头拍照,上传给后台服务进行图像识别用,识 ...

  6. ASP.NET文件上传的三种基本方法

    ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. <form i ...

  7. web 文件上传的几种方式

    问题 文件上传在WEB开发中应用很广泛. 文件上传是指将本地图片.视频.音频等文件上传到服务器上,可以供其他用户浏览或下载的过程. 以下总结了常见的文件(图片)上传的方式和要点处理. 表单上传 这是传 ...

  8. 利用Selenium实现图片文件上传的两种方式介绍

    在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当 ...

  9. Java文件上传的几种方式

    文件上传与文件上传一样重要.在Java中,要实现文件上传,可以有两种方式: 1.通过Servlet类上传 2.通过Struts框架实现上传 这两种方式的根本还是通过Servlet进行IO流的操作. 一 ...

随机推荐

  1. 自然梯度(Natural Gradient)

    自然梯度(Natural Gradient)

  2. Unity粒子系统

    最近比较清闲,就重新看了一遍例子系统,感觉能把效果做的炫酷对于初学者来说并不是一件容易的事,但是回头想想,最重要的原因可能还是没有把Particle Systems组件研究透吧,温故而知新,一起复习一 ...

  3. Mac Hadoop2.7.2的安装与配置

    这里介绍Hadoop 2.7.2在mac下的安装与配置. 安装及配置Hadoop 首先安装一下Hadoop $ brew install Hadoop 配置ssh免密码登录 用dsa密钥认证来生成一对 ...

  4. JS基础与循环

    JS 简介 [JS的三种方式] 1.HTML标签中内嵌JS <button onclick="javascript:alert('白痴')">呵呵呵</butto ...

  5. Java中Json解析

    首先准备一个JSON格式的字符串 * String JsonStr = "{object:{persons:" + "[{name:'呵呵',image:'http:// ...

  6. (原)HashMap之java8新特性

    首先说一下HashMap存储结构,数组.链表.树这三种数据结构形成了hashMap.存储结构下图所示,根据key的hash与table长度确定table位置,同一个位置的key以链表形式存储,超过一定 ...

  7. Python、PyCharm的安装及使用方法(Mac版)

    上周跟朋友喝咖啡时聊起我想学Python,她恰好也有这个打算,顺便推荐了一本书<编程小白的第1本Python入门书>,我推送到Kindle后,随手翻看了下,用语平实,简洁易懂. 之前在R语 ...

  8. 【日常】C++ 的那些“坑” —— delete 与 析构函数 与 virtual 的 9 个小例子

    C++中有无数的坑,但毕竟-- 今天就踩到了,也算是基本问题了,记录一下,顺便以后可以考考自己.你也可以猜猜答案,大牛绕行. 0x1 先看这个: #include <stdio.h> #i ...

  9. Python:认识变量和字符串

    几个月前,我开始学习个人形象管理,从发型.妆容.服饰到仪表仪态,都开始做全新改造,在塑造个人风格时,最基础的是先了解自己属于哪种风格,然后找到参考对象去模仿,可以是自己欣赏的人.明星或模特等,直至最后 ...

  10. Windows系统操作指令汇总

    CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本) 1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certmgr ...