tornado之文件上传的几种形式form,伪ajax(iframe)
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)的更多相关文章
- curl文件上传有两种方式,一种是post_fileds,一种是infile
curl文件上传有两种方式,一种是POSTFIELDS,一种是INFILE,POSTFIELDS传递@实际地址,INFILE传递文件流句柄! );curl_setopt($ch, CURLOPT_PO ...
- 让nginx支持文件上传的几种模式
文件上传的几种不同语言和不同方法的总结. 第一种模式 : PHP 语言来处理 这个模式比较简单, 用的人也是最多的, 类似的还有用 .net 来实现, jsp来实现, 都是处理表单.只有语言的差别, ...
- 文件上传的三种模式-Java
文件上传的三种方式-Java 前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方 ...
- 第二百七十三节,Tornado框架-文件上传
Tornado框架-文件上传 第一.普通表单上传文件 self.request.files["fafafa"] 获取上传文件信息,参数["上传文件框的name名称&quo ...
- 基于tornado的文件上传demo
这里,web框架是tornado的4.0版本,文件上传组件,是用的bootstrap-fileinput. 这个小demo,是给合作伙伴提供的,模拟APP上摄像头拍照,上传给后台服务进行图像识别用,识 ...
- ASP.NET文件上传的三种基本方法
ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. <form i ...
- web 文件上传的几种方式
问题 文件上传在WEB开发中应用很广泛. 文件上传是指将本地图片.视频.音频等文件上传到服务器上,可以供其他用户浏览或下载的过程. 以下总结了常见的文件(图片)上传的方式和要点处理. 表单上传 这是传 ...
- 利用Selenium实现图片文件上传的两种方式介绍
在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当 ...
- Java文件上传的几种方式
文件上传与文件上传一样重要.在Java中,要实现文件上传,可以有两种方式: 1.通过Servlet类上传 2.通过Struts框架实现上传 这两种方式的根本还是通过Servlet进行IO流的操作. 一 ...
随机推荐
- MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用
在统计查询中,经常会用到count函数,这里是基础的 MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用 -- 创建表 CREATE TABLE `tb ...
- Android 开源优秀的项目
webrtc square/picasso Android 的一个强大的图像下载和缓存库 A powerful image downloading and caching library for A ...
- 【PAT_Basic日记】1005. 继续(3n+1)猜想
#include <stdio.h> #include <stdlib.h> /** 逻辑上的清晰和代码上的清晰要合二为一 (1)首先在逻辑上一定要清晰每一步需要干什么, (2 ...
- 【STL】reverse函数用法
reverse函数的功能是反转排序一个容器中指定元素的内容. 函数参数:reverse(first,last), 其中first,last分别指向被反转序列中初始及末尾位置的双向迭代器(Bidirec ...
- 关于Java中volatile关键字笔记
volatile通常被认为是一种轻量级的synchronized,字面上它表示易变的,在并发编程中,它保证了共享变量的可见性.所谓可见性指的是,某个线程对变量进行操作后,其他线程能够读取到操作后的最新 ...
- 篇5 python自动化测试应用-Selenium环境篇
篇5 python自动化测试应用-Selenium环境篇 --lamecho 1.1概要 大家好!我是lamecho(辣么丑),从本篇开始我将开始 ...
- test back
python Mysql 下载地址 http://sourceforge.net/projects/mysql-python/
- Docker - 手动迁移镜像
在没有Docker Registry时,可以通过docker save和docker load命令完成镜像迁移的过程,先将镜像保存为压缩包,然后在其他位置再加载压缩包. 将镜像保存为压缩包文件 [ro ...
- Docker - 导出导入容器
导出和导入容器 使用docker export命令可以将本地容器导出为容器快照文件. 使用docker import命令可以将容器快照文件导入到本地镜像库,也可以通过指定URL或者某个目录来导入. 特 ...
- PAT1028. List Sorting (25)---strcmp
题目链接为:https://www.patest.cn/contests/pat-a-practise/1028 1028. List Sorting (25) Excel can sort reco ...