首页 > 代码库 > tornado之文件上传的几种形式form,伪ajax(iframe)
tornado之文件上传的几种形式form,伪ajax(iframe)
1直接form提交给后台处理
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>form-upload</title> 6 </head> 7 <body>
注意form的enctype类型"multipart/form-data"
8 <form action="/form_upload" method="post" enctype="multipart/form-data"> 9 <input type="file" name="file"/> 10 <input type="submit", value=http://www.mamicode.com/"上传"/> 11 </form> 12 </body> 13 </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 的局部刷新特性,对浏览器兼容性更好
1 <body> 2 <form id="myform" action="/iframe" method="post" enctype="multipart/form-data"> 3 <input type="file" name="file"/> 4 <input type="button" value=http://www.mamicode.com/"上传" onclick="redirect()"/> 5 <iframe id="myiframe" name="my_iframe"></iframe> 6 </form> 7 <script src=http://www.mamicode.com/"{{static_url(‘jquery-3.2.1.js‘)}}"></script> 8 <script> 9 function redirect() { 10 // document.getElementById(‘myiframe‘).onload = test;#执行完iframe立即执行test函数 11 $(‘#myiframe‘).onload = test; 12 document.getElementById(‘myform‘).target = ‘my_iframe‘;//此处等于IDmyframe会有不同 13 document.getElementById(‘myform‘).submit(); 14 // $(‘#myform‘).submit(); 15 } 16 function test() { 17 var t = $(‘#myiframe‘).contents().find(‘body‘).text(); 18 console.log(t) 19 } 20 </script> 21 </body>
tornado之文件上传的几种形式form,伪ajax(iframe)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。