Tornado_02文件上传

在这里插入图片描述

一:文件上传

1.客户端上传文件到服务端
2.服务端接收并且处理保存
3服务端返回客户端文件
4.客户端接收并解析显示

二.示例代码

服务端代码
注意:根目录下创建files文件夹用于存放客户端上传的文件
tornado_project/test3.py

"""
作者:FM黎明之前
时间:2021/03/06
功能:文件上传
"""
# 导入模块包
import tornado.web
import tornado.ioloop


# 定义文件上传处理类
class UploadHandler(tornado.web.RequestHandler):
    # 处理get请求
    def get(self, *args, **kwargs):
        self.render('templates/upload.html')

    # 处理post请求
    def post(self, *args, **kwargs):
        # 获取文件信息不存在则返回字典
        img1 = self.request.files['img1']
        # img1 = self.request.files.get('img1')
        print(img1)
        # img = [{'filename': 'index_ct5.jpg', 'body': b'\xff\xd8\xff\...','content_type': 'image/jpeg'}]
        # 遍历img1文件对象
        for img in img1:
            body = img.get('body', '')
            conent_type = img.get('content_type', '')
            filename = img.get('filename', '')
        # 将图片保存files目录
        import os
        dir = os.path.join(os.getcwd(), 'files', filename)
        # 写入二进制内容
        with open(dir, 'wb') as fw:
            fw.write(body)

        # 设置响应头信息
        self.set_header('Content-Type', conent_type)
        # 将图片发送到客户端
        self.write(body)


# 设置路由并创建应用对象
app = tornado.web.Application([
    ('/upload/', UploadHandler)
])

# 绑定监听
app.listen(8008)

# 启动监听
tornado.ioloop.IOLoop.instance().start()

客户端代码
tornado_project/templates/upload.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tornado文件上传功能</title>
</head>
<body>
<form action="/upload/"  method="post" enctype="multipart/form-data">
    <input type="file" name="img1"/>
    <input type="submit" value="图片上传"/>
</form>
</body>
</html>
三.输出

get请求
在这里插入图片描述
post请求
在这里插入图片描述
注意:服务端报错可能端口占用引起
说明:学习笔记,如果错误,欢迎留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值