tornado文件上传实例

上传文件这块可以分为两大类,第一类是通过form表单验证进行上传,还有一类就是通过ajax上传。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <h3>form文件上传</h3>
 9     <form action="/index" method="post" enctype="multipart/form-data">
10         <p>请选择上传文件:</p>
11         <input type="file" name="update_file"/>
12         <input type="submit" value="上传"/>
13     </form>
14 
15 </body>
16 </html>
from表单文件上传html
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <h3>文件上传,xml方式提交</h3>
 9     <input type="file" id="img"/>
10     <input type="button" onclick="UpdateFile();" value="上传">
11 
12     <script>
13         function UpdateFile() {
14             //获取文件对象
15             var fileObj = document.getElementById('img').files[0];
16             //创建Form对象
17             var forms = new FormData();
18             forms.append("update_file", fileObj);
19             var xhr = new XMLHttpRequest();
20             xhr.open("post", '/index2', true);
21             xhr.send(forms);
22         }
23     </script>
24 
25 
26 </body>
27 </html>
原生xml文件上传html
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <script src="/static/jquery-1.7.1.min.js"></script>
 7 </head>
 8 <body>
 9     <h3>文件上传,ajax方式提交</h3>
10     <input type="file" id="img"/>
11     <input type="button" onclick="UpdateFile();" value="上传">
12 
13     <script>
14         function UpdateFile() {
15             //获取文件对象
16             var fileObj = document.getElementById('img').files[0];
17             //创建Form对象
18             var forms = new FormData();
19             forms.append("update_file", fileObj);
20 
21             $.ajax({
22                 type: 'POST',
23                 url: '/index3',
24                 data: forms,
25                 processData: false,
26                 contentType: false,
27                 success: function (arg) {
28                     console.log(arg);
29                 }
30             })
31         }
32     </script>
33 
34 
35 </body>
36 </html>
jquery文件上传html
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <script src="/static/jquery-1.7.1.min.js"></script>
 7     <style>
 8         .hide{
 9             display: none;
10         }
11     </style>
12 </head>
13 <body>
14     <h3>文件上传,iframe方式</h3>
15     <form id="my_form" name="form" action="/index4" method="POST" enctype="multipart/form-data">
16         <div>
17             <input name="update_file" id="my_file" type="file"/>
18             <input type="button" name="action" value="Update" onclick="redirect();"/>
19             <iframe id="my_iframe" name="my_iframe" src="" class="hide"></iframe>
20         </div>
21     </form>
22 
23     <script>
24         function redirect() {
25             document.getElementById('my_iframe').onload= Testt;
26             document.getElementById('my_form').target = 'my_iframe';
27             document.getElementById('my_form').submit();
28         }
29 
30         function Testt(ths) {
31             var t = $("#my_iframe").contents().find("body").text();
32             console.log(t);
33         }
34     </script>
35 </body>
36 </html>
iframe文件上传html
 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 import tornado.ioloop
 4 import tornado.web
 5 
 6 
 7 class IndexHandler(tornado.web.RequestHandler):
 8     def get(self):
 9         self.render('index.html')
10 
11     def post(self, *args, **kwargs):
12         file_metas = self.request.files["update_file"]  #获取文件信息
13         for meta in file_metas:
14             file_name = meta['filename']   #获取它的文件名
15             import os
16             with open(os.path.join("static", "img", file_name), 'wb') as up:  #打开本地一个文件
17                 up.write(meta['body']) #body就是文件内容,把它写到本地
18 
19 class Index2Handler(tornado.web.RequestHandler):
20     def get(self):
21         self.render('index2.html')
22 
23     def post(self, *args, **kwargs):
24         file_metas = self.request.files["update_file"]  #获取文件信息
25         for meta in file_metas:
26             file_name = meta['filename']   #获取它的文件名
27             import os
28             with open(os.path.join("static", "img", file_name), 'wb') as up:  #打开本地一个文件
29                 up.write(meta['body']) #body就是文件内容,把它写到本地
30 
31 class Index3Handler(tornado.web.RequestHandler):
32     def get(self):
33         self.render('index3.html')
34 
35     def post(self, *args, **kwargs):
36         file_metas = self.request.files["update_file"]  #获取文件信息
37         for meta in file_metas:
38             file_name = meta['filename']   #获取它的文件名
39             import os
40             with open(os.path.join("static", "img", file_name), 'wb') as up:  #打开本地一个文件
41                 up.write(meta['body']) #body就是文件内容,把它写到本地
42 
43 class Index4Handler(tornado.web.RequestHandler):
44     def get(self):
45         self.render('index4.html')
46 
47     def post(self, *args, **kwargs):
48         file_metas = self.request.files["update_file"]  #获取文件信息
49         for meta in file_metas:
50             file_name = meta['filename']   #获取它的文件名
51             import os
52             with open(os.path.join("static", "img", file_name), 'wb') as up:  #打开本地一个文件
53                 up.write(meta['body']) #body就是文件内容,把它写到本地
54 
55 
56 
57 settings = {
58     'template_path': 'views',  #视图模板路径
59     'static_path': 'static',   #静态文件路径
60 }
61 #路由映射,路由系统
62 def make_app():
63     return tornado.web.Application([
64         (r"/index", IndexHandler),
65         (r"/index2", Index2Handler),
66         (r"/index3", Index3Handler),
67         (r"/index4", Index4Handler),
68     ], **settings)
69 
70 if __name__ == "__main__":
71     app = make_app()
72     app.listen(8888)
73     tornado.ioloop.IOLoop.current().start()
app.py
原文地址:https://www.cnblogs.com/june-L/p/12081696.html