tornado文件上传实例

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

 1 
 2 "en">
 3 
 4     "UTF-8">
 5     Title
 6 
 7 
 8     

form文件上传

9
"/index" method="post" enctype="multipart/form-data"> 10

请选择上传文件:

11 "file" name="update_file"/> 12 "submit" value="上传"/> 13
14 15 16
from表单文件上传html
 1 
 2 "en">
 3 
 4     "UTF-8">
 5     Title
 6 
 7 
 8     

文件上传,xml方式提交

9 "file" id="img"/> 10 "button" onclick="UpdateFile();" value="上传"> 11 12 24 25 26 27
原生xml文件上传html
 1 
 2 "en">
 3 
 4     "UTF-8">
 5     Title
 6     
 7 
 8 
 9     

文件上传,ajax方式提交

10 "file" id="img"/> 11 "button" onclick="UpdateFile();" value="上传"> 12 13 33 34 35 36
jquery文件上传html
 1 
 2 "en">
 3 
 4     "UTF-8">
 5     Title
 6     
 7     
12 
13 
14     

文件上传,iframe方式

15
"my_form" name="form" action="/index4" method="POST" enctype="multipart/form-data"> 16
17 "update_file" id="my_file" type="file"/> 18 "button" name="action" value="Update" onclick="redirect();"/> 19 20
21
22 23 35 36
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

你可能感兴趣的:(tornado文件上传实例)