一、利用HTTP协议想服务器传递参数
提取url的特定部分 http://127.0.0.1:8000/qzk/good/nice/handsomeget方式传递参数 http://127.0.0.1:8000/qzk/?name=qzk&age=18self.get_query_argument(name,default=ARG_DEFAULT,strip=True)参数: name:从get请求参数字符串中返回指定参数的值,如果穿线过同名参数,则返回最后一个default:设置为未传的name参数是返回默认的值,如果default也没有设置,会抛出异常 tornado.web.MissingArgumentErrorstrip:表示是否过滤掉左右两边的空白字符,默认为Trueself.get_query_arguments(name,strip=True) 返回的是list示例:http://127.0.0.1:8000/qzk/?name=qzk&name=qqq-->返回 name_list = ['qzk','qqq']post方式传递参数 http://127.0.0.1:8000/userinfoself.get_body_argument(name,default=ARG_DEFAULT,strip=True)参数: name:从get请求参数字符串中返回指定参数的值,如果穿线过同名参数,则返回最后一个default:设置为未传的name参数是返回默认的值,如果default也没有设置,会抛出异常 tornado.web.MissingArgumentErrorstrip:表示是否过滤掉左右两边的空白字符,默认为Trueself.get_body_arguments(name,strip=True) 返回的是list示例:http://127.0.0.1:8000/userinfo-->返回 name_list = ['qzk','qqq']既可以获取get请求,也可以获取post请求 self.get_argument(name,default=ARG_DEFAULT,strip=True)self.get_arguments((name,strip=True)注意:一般我们不太会用该方法,因为不太容易区分get/post在http报文的头中增加自定义的字段二、request对象
作用:存储关于请求的相关信息属性: method:HTTP请求的方式host:被请求的主机名uri:请求的完整资源地址,包括路径和get查询参数的部分path:请求的路径部分query:请求的参数部分version:使用的http版本headers:请求的协议头,是一个字典类型body:请求体数据remote_ip:客户端的ipfiles:用户上传的文件,字典类型三、tornado.httputil.HTTPFile对象
作用:接收到的文件对象属性: filename:文件的实际名字body:文件的数据实体content_type:文件的类型示例: """url-application""" # -*- coding: utf-8 -*- import tornado.web from views import index import config class Application(tornado.web.Application): def __init__(self): handlers = [ (r'/uploadfiles', index.UploadFilesHandler), ] super(Application, self).__init__(handlers, **config.settings) import os import config class UploadFilesHandler(RequestHandler): def get(self, *args, **kwargs): self.render('upload.html') def post(self, *args, **kwargs): fileDict = self.request.files print(fileDict) for inputname in fileDict: filelist = fileDict[inputname] for file_obj in filelist: filePath = os.path.join(config.BASE_DIR, 'media/' + file_obj.filename) with open(filePath, 'wb') as f: f.write(file_obj.body) self.write('ok') <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>upload</title> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> </head> <body> <form action="/uploadfiles" method="post" enctype="multipart/form-data"> <br> <input type="file" name="file"> <br> <input type="file" name="file"> <br> <input type="file" name="img"> <br> <!--<input type="image" name="image">--> <button class="btn btn-danger" >提交</button> </form> </body> </html>打印结果:
{ 'file': [ { 'filename': 'a.txt', 'body': b'qwe', 'content_type': 'text/plain' }, { 'filename': 'b.txt', 'body': b'asd', 'content_type': 'text/plain' } ], 'img':[ { 'filename':'b2.png', 'body':b'...', 'content_type':'image/png' } ] }转载于:https://www.cnblogs.com/qianzhengkai/p/11343394.html