zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    TCP心跳 | TCP keepAlive(转)
    闲说HeartBeat心跳包和TCP协议的KeepAlive机制
    一个DNS统计,RCFs,工具站点
    JMX
    【转】如何实现一个配置中心
    用Netty开发中间件:高并发性能优化
    UDP server & client
    DNS缓存
    C正则库做DNS域名验证时的性能对比
    DNS压力测试工具dnsperf简介
  • 原文地址:https://www.cnblogs.com/june-L/p/12081696.html
Copyright © 2011-2022 走看看