Tornado_02文件上传
Posted Python黎明之前
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tornado_02文件上传相关的知识,希望对你有一定的参考价值。
一:文件上传
1.客户端上传文件到服务端
2.服务端接收并且处理保存
3服务端返回客户端文件
4.客户端接收并解析显示
二.示例代码
服务端代码
注意:根目录下创建files文件夹用于存放客户端上传的文件
tornado_project/test3.py
1"""
2作者:FM黎明之前
3时间:2021/03/06
4功能:文件上传
5"""
6# 导入模块包
7import tornado.web
8import tornado.ioloop
9
10
11# 定义文件上传处理类
12class UploadHandler(tornado.web.RequestHandler):
13 # 处理get请求
14 def get(self, *args, **kwargs):
15 self.render('templates/upload.html')
16
17 # 处理post请求
18 def post(self, *args, **kwargs):
19 # 获取文件信息不存在则返回字典
20 img1 = self.request.files['img1']
21 # img1 = self.request.files.get('img1')
22 print(img1)
23 # img = [{'filename': 'index_ct5.jpg', 'body': b'\xff\xd8\xff\...','content_type': 'image/jpeg'}]
24 # 遍历img1文件对象
25 for img in img1:
26 body = img.get('body', '')
27 conent_type = img.get('content_type', '')
28 filename = img.get('filename', '')
29 # 将图片保存files目录
30 import os
31 dir = os.path.join(os.getcwd(), 'files', filename)
32 # 写入二进制内容
33 with open(dir, 'wb') as fw:
34 fw.write(body)
35
36 # 设置响应头信息
37 self.set_header('Content-Type', conent_type)
38 # 将图片发送到客户端
39 self.write(body)
40
41
42# 设置路由并创建应用对象
43app = tornado.web.Application([
44 ('/upload/', UploadHandler)
45])
46
47# 绑定监听
48app.listen(8008)
49
50# 启动监听
51tornado.ioloop.IOLoop.instance().start()
客户端代码
tornado_project/templates/upload.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <title>tornado文件上传功能</title>
6</head>
7<body>
8<form action="/upload/" method="post" enctype="multipart/form-data">
9 <input type="file" name="img1"/>
10 <input type="submit" value="图片上传"/>
11</form>
12</body>
13</html>
三.输入
get请求
post请求
注意:服务端报错可能端口占用引起
说明:学习笔记,如果错误,欢迎留言。
以上是关于Tornado_02文件上传的主要内容,如果未能解决你的问题,请参考以下文章
python requests上传文件 tornado 接收文件
Nine——tornado操作之用户图片上传和展示功能代码的重构(由开始的面向编程的思维方式转变为面向对象的思维方式进行代码的重构!)