tornado文件上传

# 文件上传
# coding=utf-8

import tornado.web
import tornado.ioloop
from tornado.log import app_log


# 2.创建处理类+请求+定义+get+self
class UploadHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.render('templates/upload.html')

    def post(self, *args, **kwargs):
        # 获取请求参数
        img1 = self.request.files['img1']
        # print报错。写成了函数()
        # print(img1)

        ## 遍历img1是列表,获取里面的字典,再获body内容
        for img in img1:
            body = img.get('body', '')
            content_type = img.get('content_type', '')
            filename = img.get('filename', '')
        ## 将图片存放 files目录中 #目录路径dir
        import os  ## 绝对路径
        dir = os.path.join(os.getcwd(), 'files', filename)
        ##1写入 二进制文件wb
        with open(dir, 'wb') as fw:
            fw.write(body)  # 写入二进制文件图片
        ##2将图片显示到浏览器页面中
        ##设置self.set_header,响应头Content-Type的信息
        self.set_header('Content-Type', content_type)
        self.write(body)


# 3.路由器+app+地址
app = tornado.web.Application([
    (r'/upload/', UploadHandler)
])

# 4.连接端口号
app.listen(8888)

# 提交post请求,指向UploadHandler处理类
# 5.监听端口 instance()实例
tornado.ioloop.IOLoop.instance().start()
"""
127.0.0.1:8888/upload/
"""

你可能感兴趣的:(tornado)